如何使用django-postman设置django-siteree

时间:2014-06-26 01:05:17

标签: python django django-sitetree

我正在尝试设置django-sitetree以使用django-postman,但我没有太多运气。

大多数页面都能正常工作,但我似乎无法弄清楚如何映射postman_view网址以正常工作。这是我到目前为止所拥有的。也许有人可以帮助我一点?

sitetrees.py

from sitetree.utils import tree, item

sitetrees = (
    tree('postman', items=[
        item('Messages', '/messages/', url_as_pattern=False, access_guest=False, access_loggedin=True, children=[
            item('Compose', 'postman_write', access_guest=False, access_loggedin=True),
            item('Inbox', 'postman_inbox', access_guest=False, access_loggedin=True),
            item('View', 'postman_view message.id', access_guest=False, access_loggedin=True, in_menu=False, in_sitetree=False)
        ])
    ])
)

Postman urls.py摘录

urlpatterns = patterns('',                                                      
    url(r'^inbox/(?:(?P<option>'+OPTIONS+')/)?$', InboxView.as_view(), name='postman_inbox'),
    url(r'^sent/(?:(?P<option>'+OPTIONS+')/)?$', SentView.as_view(), name='postman_sent'),
    url(r'^archives/(?:(?P<option>'+OPTIONS+')/)?$', ArchivesView.as_view(), name='postman_archives'),
    url(r'^trash/(?:(?P<option>'+OPTIONS+')/)?$', TrashView.as_view(), name='postman_trash'),
    url(r'^write/(?:(?P<recipients>[^/#]+)/)?$', WriteView.as_view(), name='postman_write'),
    url(r'^reply/(?P<message_id>[\d]+)/$', ReplyView.as_view(), name='postman_reply'),
    url(r'^view/(?P<message_id>[\d]+)/$', MessageView.as_view(), name='postman_view'),
    url(r'^view/t/(?P<thread_id>[\d]+)/$', ConversationView.as_view(), name='postman_view_conversation'),
    url(r'^archive/$', ArchiveView.as_view(), name='postman_archive'),          
    url(r'^delete/$', DeleteView.as_view(), name='postman_delete'),             
    url(r'^undelete/$', UndeleteView.as_view(), name='postman_undelete'),          
    (r'^$', RedirectView.as_view(url='inbox/')),                                
)

postman_writepostman_inbox工作正常,但当我访问postman_view时,我收到此错误:

SiteTreeError at /messages/view/2/

Unable to resolve current sitetree item to get a `title_resolved` for current page. Check whether there is an appropriate sitetree item defined for current URL.

1 个答案:

答案 0 :(得分:0)

感谢idle sign让我指向了正确的方向。

事实证明postman / view.html模板没有一个名为message的变量,就像我假设的那样。有一组名为pm_messages的消息。所以修正后的sitetrees.py是:

sitetrees = (
    tree('postman', items=[
        item('Messages', '/messages/', url_as_pattern=False, access_guest=False, access_loggedin=True, children=[
            item('Compose', 'postman_write', access_guest=False, access_loggedin=True),
            item('Inbox', 'postman_inbox', access_guest=False, access_loggedin=True),
            item('View', 'postman_view pm_messages.0.id', access_guest=False, access_loggedin=True, in_menu=False, in_sitetree=False)
        ])
    ])
)