Pinax代碼分析2
上一次大概分析了account package的代碼。除了account之外,Pinax內置的apps還有:analytics、authsub、basic_profiles、bbauth、blog、misc、profiles、projects、signup_codes、staticfiles、tribes、waitinglist。
analytics
analytics app 用來在項目中使用google統計。定義了一個模板標籤來插入 google 統計的代碼,從源代碼看來需要在settings裏設置URCHIN_ID。沒有views和models。
authsub
用於獲得Google Contacts的訪問權限。
url:authsub/login/
basic_profiles
一個基本的檔案app,用戶的姓名、關於、地點、和網站,和account app類似。我安裝的項目沒有激活這個app。
bbauth
貌似連接yahoo的認證。應該是和authsub一樣的。直接使用的 ybrowserauth 模塊。
url:bbauth/
直接運行不成功,需要settings裏設置BBAUTH_APP_ID和BBAUTH_SHARED_SECRET。
blog
博客
url:blog/
有一個templates子目錄,notification子目錄是爲了通知模塊建立的模板。此外的模板都是用於定義templatetag準備的模板。
例如templatetags/blog.py定義了一個名爲 render_content 的 inclusion_tag。
@register.inclusion_tag('wiki/article_content.html')
def render_content(article, content_attr='content', markup_attr='markup'):
return {
'content': getattr(article, content_attr),
'markup': getattr(article, markup_attr)
}
其中inclusion_tag裝飾器接受一個模板作爲參數。函數 render_content 返回的字典將被用於 wiki/article_content.html 文件。這裏的blog app居然用了wiki app的模板,而且在blog的子目錄裏還有一份一樣的,但是沒有使用的模板拷貝。感覺代碼比較混亂。
參考:http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags
feeds.py用於生成blog的feeds,它使用的是 http://code.google.com/p/django-atompub/ 項目的 atom.py 文件,重命名爲了atomformat。feeds生成之後要在項目的urls中定義訪問feeds的地址:
from blog.feeds import BlogFeedAll, BlogFeedUser
blogs_feed_dict = {"feed_dict": {
'all': BlogFeedAll,
'only': BlogFeedUser,
}}
urlpatterns = patterns('',
……
(r'^feeds/posts/(.*)/$', 'django.contrib.syndication.views.feed', blogs_feed_dict),
……
)
management.py用於創建 notification 的類型。
def create_notice_types(app, created_models, verbosity, **kwargs):
notification.create_notice_type("blog_friend_post", _("Friend Posted to Blog"), _("a friend of yours posted to their blog"), default=2)
notification.create_notice_type("blog_post_comment", _("New Comment on Blog Post"), _("a comment was made on one of your blog posts"), default=2)
第一個參數是Label、第二個參數是顯示的標題,地三個參數是描述,最後一個參數在文檔裏沒有說明,應該是控制在默認情況下是否發送郵件。