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、第二个参数是显示的标题,地三个参数是描述,最后一个参数在文档里没有说明,应该是控制在默认情况下是否发送邮件。