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

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

創建models

打開你的/guestbook/models文件,創建如下的資料庫模型:

from google.appengine.ext import db
from django.contrib.auth.models importUser

classGreeting(db.Model):
author = db.ReferenceProperty(User)
content = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)

使用者model將會由app-engine-patch提供,所以這裡不必特意指定了。因為我們希望Django和Google使用者認證可以
生效,所以需要在你的設置中激活中間件並制定正確的使用者model.在/settings.py中替換Django的認證中間件:

# Replace Django’s AuthenticationMiddleware with HybridAuthenticationMiddleware.
MIDDLEWARE_CLASSES =(

‘ragendja.auth.middleware.HybridAuthenticationMiddleware’,

)

並添加

# Change the User model class
AUTH_USER_MODULE =’ragendja.auth.hybrid_models’

# Add google_login_url and google_logout_url tags
GLOBALTAGS =(‘ragendja.templatetags.googletags’,)

到文件的末尾。

這就是一切。現在你已經可同時使用Django和Google的使用者認證了。另外,你還可以啟用模板標記
以渲染隨時出現的Google登入和登出連結。要嘗試的話,創建一個/guestbook/templates/index.html文件

<html>
<head>
</head>
<body>compliant
<divclass=”login”>
{% if user.is_authenticated %}
Welcome, {{ user.username }}
<ahref=”{% google_logout_url request.get_full_path %}”>Logout</a>
{% else %}
<ahref=”{% google_login_url request.get_full_path %}”>Login</a>
{% endif %}
</div>
</body>
</html>

並且在/guestbook/urls.py中設置URL路由: from django.conf.urls.defaults import*

urlpatterns = patterns(”,
(r’^,’django.views.generic.simple.direct_to_template’,{‘template’:'index.html’}),
)

如果你現在在瀏覽器中加載http://localhost:8000/guestbook/ ,你要看到google認證的請求。

注意: 這裡你通過渲染html模板的同時也見到了Django的generic views是如何生效的.

參考來源

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

Related Posts


Comments are closed.