Django:有没有办法设置全局视图?例如通过所有URL启用侧边栏数据

0 投票
1 回答
848 浏览
提问于 2025-04-16 02:38

我正在建立一个Django应用,做的是一个比较简单的博客,到目前为止一切都很顺利。我已经实现了评论、标签等功能。但是有一件事让我很烦恼:我想要的侧边栏无法正常工作。我使用的是django.views.generic.date_based这个通用视图,这是我博客的urls.py文件:

    urlpatterns = patterns('django.views.generic.date_based',
        (r'(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$', 'object_detail',dict(info_dict, slug_field='slug',template_name='blog/detail.html')),

 (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/(?P<slug>[-\w]+)/$', 'object_detail', dict(info_dict, template_name='blog/list.html')),

 (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>w{1,2})/$','archive_day',dict(info_dict,template_name='blog/list.html')),

 (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$','archive_month', dict(info_dict, template_name='blog/list.html')),

 (r'^(?P<year>\d{4})/$','archive_year', dict(info_dict, template_name='blog/list.html')),

 (r'^$','archive_index', dict(info_dict, template_name='blog/list.html')),

)

当我使用带有'archive_index'的URL时,我可以很容易地在侧边栏中显示最新的文章,但当我进入某篇文章时,只能使用“object_detail”,这导致我的侧边栏内容消失了。解决这个问题的最佳方法是什么?有没有办法让某些对象在全局可用?通过视图或者其他方式。

1 个回答

5

人们通常会用模板标签来做这样的事情。关于自定义模板标签的文档可能会对你有帮助,还有一个很不错的教程在这里

另外,你也可以使用上下文处理器,不过这样会给每一个请求增加额外的负担,可能并不是必要的。

撰写回答