使用app-engine-patch發揮Django的威力(五)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

提供非Google使用者的認證 現在讓我們為沒有Google帳戶的人員添加認證.我們再次將儘可能的利用generic views,這樣做比較簡單而且比手寫
views出錯的可能性更小。

第一件事情就是讓使用者可以登入,還記得我們在settings.py中設置的AUTH_USER_MODULE指令嗎?這將使我們能夠
導入通常的Django 使用者model,而且還有混合身份驗證的支持。

註冊使用者

為了讓使用者可以註冊帳戶,在/guestbook/views.py中添加如下代碼:

from django.contrib.auth.models importUser
from django.contrib.auth.forms importUserCreationForm
from django.shortcuts import render_to_response
from django.http importHttpResponseRedirect

def create_new_user(request):
form =UserCreationForm()
# if form was submitted, bind form instance.
if request.method ==’POST’:
form =UserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
# user must be active for login to work
user.is_active =True
user.put()
returnHttpResponseRedirect(‘/guestbook/login/’)
return render_to_response(‘guestbook/user_create_form.html’,{‘form’: form})

這裡不需要講太多細節,因為它實際上與標準Django沒什麼區別。app-engine-patch在幕後處理了創建使用者的細節,包括使用
App Engine的datastore代替通常Django中使用的資料庫表。

UserCreationForm自動由Django提供。這個view創建了一個表單對象,並把它傳給一個叫user_create_form.html的模板。
當一個表單通過POST請求提交後,一個使用者被創建,接著使用者將被重定向到登入頁面。如果表單是無效的,將提供一個有意義的錯誤信息提示.

為了看到這個操作,還有兩件事得做。首先把”create_new_user方法掛到你的URL配置文件/guestbook/urls.py中去:

urlpatterns = patterns(”,

(r’^signup/,’guestbook.views.create_new_user’),
)

並創建一個模板 /guestbook/templates/user_create_form.html:
<html>
<head>
</head>
<body>
<formaction=”.”method=”post”>
<table>
{{form.as_table}}
</table>
You can also login with your <a href=”{% google_login_url “/guestbook” %}”>Google account.</a>
<inputtype=”submit”value=”submit”>
</form>
</body>
</html>

參考來源

使用app-engine-patch發揮Django的威力

Related Posts


Comments are closed.