Подтвердить что ты не робот

Пример шаблона Python Social Auth Django

Есть ли у кого-нибудь открытый пример, используя Python Social Auth с Django в шаблонах?

Я просмотрел их репозиторий Github, и в django exmaple нет ничего о том, как справиться с ним в шаблонах (например, при входе в систему, выходе из системы и т.д.).

4b9b3361

Ответ 1

Допустим, вы следовали правилам настройки Python Social Auth в http://psa.matiasaguirre.net/docs/configuration/django.html, и вы хотите использовать facebook login. Настройки бэкэнд в settings.py должны выглядеть так:

AUTHENTICATION_BACKENDS = (
'social.backends.facebook.FacebookOAuth2',
'django.contrib.auth.backends.ModelBackend',
)

Вы должны зарегистрироваться в качестве разработчика facebook и создать приложение, а затем заполнить дополнительные данные в файле settings.py:

SOCIAL_AUTH_FACEBOOK_KEY = 'xxxxxxxxxxxxxx'
SOCIAL_AUTH_FACEBOOK_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']

Предположим, что после входа в систему вы хотите, чтобы пользователи перенаправлялись на страницу участников, поэтому вы добавляете этот параметр в свои settings.py:

LOGIN_REDIRECT_URL = '/members'

Предположим, вы создали login_app в своем проекте django, а также создали свой домашний вид с помощью шаблона home.html, а также создали представление членов с помощью шаблона members.html(у вас должен быть каталог вашего шаблона).

В соответствии с инструкциями по настройке наш urls.py должен выглядеть так:

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    url('', include('social.apps.django_app.urls', namespace='social')),
    url(r'^admin/', include(admin.site.urls)),
)

Если мы попробуем bla-bla-bla url с DEBUG = True, мы получим ошибку:

Using the URLconf defined in your_project.urls, Django tried these URL patterns, in this order:
    ^login/(?P<backend>[^/]+)/$ [name='begin']
    ^complete/(?P<backend>[^/]+)/$ [name='complete']
    ^disconnect/(?P<backend>[^/]+)/$ [name='disconnect']
    ^disconnect/(?P<backend>[^/]+)/(?P<association_id>[^/]+)/$ [name='disconnect_individual']
    ^admin/
The current URL, bla-bla-bla/, didn't match any of these.

Для очень простого теста нам нужно добавить домашний вид, просмотр членов и выход из системы (логин уже обработан), поэтому наш обновленный urls.py должен выглядеть:

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    url('', include('social.apps.django_app.urls', namespace='social')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'login_app.views.home', name='home'),
    url(r'^members/', 'login_app.views.members', name='members'),
    url(r'^logout/$', 'login_app.views.logout', name='logout'),
)

В нашем каталоге login_app у нас должны быть файлы (не обращайте внимание на *.pyc файлы и папку миграций, потому что я использую версию django 1.7b4):

login_app/
├── admin.py
├── __init__.py
├── __init__.pyc
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
├── views.py
└── views.pyc

Наш view.py должен выглядеть так:

from django.shortcuts import render, redirect
from django.contrib.auth import logout as auth_logout

def home(request):
    context = {}
    template = 'home.html'
    return render(request, template, context)

def members(request):
    context = {}
    template = 'members.html'
    return render(request, template, context)

def logout(request):
    auth_logout(request)
    return redirect('/')

Другие файлы (включая models.py) мы можем оставить без добавления чего-либо.

Чтобы войти в систему с помощью facebook, мы должны перенаправить ваших пользователей на "login/facebook". Таким образом, вы можете просто добавить эту ссылку или кнопку, где это уместно, в свой шаблон home.html:

<a href="login/facebook">Login with facebook</a>

После нажатия этой ссылки (в случае settings.py, urls.py, views.py в порядке, и ваше приложение для facebook настроено хорошо), пользователи будут входить в систему с помощью facebook и перенаправляться на страницу участников. Если вы входите в администратор django, вы сможете увидеть новую запись в разделе [Главная страницa > По умолчанию > Социальные права пользователя] и новый пользователь в разделе [Домашняя страницa > Аутентификация и авторизация > Пользователи].

Когда пользователь аутентифицируется и перенаправляется на страницу участников, вы можете иметь информацию о пользователе, такую ​​как имя пользователя, имя, фамилию, адрес электронной почты. Вы можете отобразить эту информацию, добавив в свой шаблон members.html:

<p>User name and surname: {{ user.first_name }} {{ user.last_name}}</p>
<p>Username: {{ user.username }}</p>
<p>E-mail: {{ user.email }}</p>

Как вы уже заметили, для выхода из системы мы сделали приложение в наших view.py:

def logout(request):
    auth_logout(request)
    return redirect('/')

Итак, мы можем добавить ссылку в наш шаблон members.html:

<a href="/logout">Logout</a>

И этого было бы достаточно, чтобы вывести пользователя из системы и перенаправить на начальную домашнюю страницу.

Это был бы очень простой пример, который может дать лучшее понимание входа и выхода в систему с помощью Python Social Auth.

Ответ 2

Внутри python-social-auth есть пример. Вам просто нужно установить python-social-auth, настроить свою базу данных и ваше приложение facebook или другое социальное приложение и поместить свой секретный ключ в файл settings.py и запустить приложение. Существует шаблон с шаблонами и многое другое. Нажмите здесь: https://github.com/omab/python-social-auth и посмотрите папку примеров.