簡體   English   中英

Python Social Auth Django模板示例

[英]Python Social Auth Django template example

有人在模板中使用Python Social Auth和Django有一個開放的例子嗎?

我看了他們的Github回購,在django exmaple中,沒有關於如何在模板中處理它(例如登錄,注銷等)。

假設您在http://psa.matiasaguirre.net/docs/configuration/django.html上遵循了Python Social Auth配置指南,並且您希望使用facebook登錄。 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'

假設您在django項目中創建了login_app,並使用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)),
)

如果我們嘗試使用DEBUG = True設置的bla-bla-bla url,我們會收到一個錯誤:

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

我們的views.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 admin,您應該能夠在[Home> Default> User social auths]下看到新條目,在[Home> Authentication and Authorization> Users]中看到新用戶。

當用戶通過身份驗證並重定向到成員頁面時,您可以獲得用戶的信息,例如用戶名,名字,姓氏,電子郵件。 您可以通過添加到members.html模板來顯示該信息:

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

正如您已經注意到的,對於注銷,我們在views.py中創建了一個應用程序:

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

我們可以在members.html模板中添加一個鏈接:

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

這足以注銷用戶並重定向到初始主頁。

這將是一個非常簡單的示例,可以更好地了解如何使用Python Social Auth登錄和注銷。

在python-social-auth里面有一個例子。 您只需要安裝python-social-auth,配置您的數據庫和您的Facebook應用程序或其他社交應用程序,並將您的密鑰和密鑰放在settings.py文件中並運行該應用程序。 有一個模板標簽模板等等。 單擊此處: https//github.com/omab/python-social-auth並查看示例文件夾。

我發現本教程最有幫助: http//www.artandlogic.com/blog/2014/04/tutorial-adding-facebooktwittergoogle-authentication-to-a-django-application/ python-social-auth中的示例應用程序比較簡潔,難以理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM