将一个变量(一个标志)从 urls.py 传递给 django 中的 views.py
Posted
技术标签:
【中文标题】将一个变量(一个标志)从 urls.py 传递给 django 中的 views.py【英文标题】:Pass a variable ( a flag ) from urls.py to views.py in django 【发布时间】:2011-12-09 05:00:31 【问题描述】:我目前有一个“博客”应用程序,它将根据用户名显示不同用户的博客文章。这就是我的 urls.py 的样子。
urlpatterns = patterns('blog.views',
url(r'^(?P<blog_author>[^/]+)/$', 'entries', name='blog'),
url(r'^(?P<blog_author>[^/]+)/(?P<entry_slug>[^/]+)/$', 'blog_entry', name='blog_entry'),
)
因此,blog/authorname/
将列出该特定作者的所有博文条目,blog/authorname/foo-post/
将呈现特定博文。我正在尝试做的是将校友成员的博文分别永久重定向到blog/alumni/authorname
和blog/alumni/authorname/foo-post/
。我在我的用户模型中添加了一个字段,该字段将指示用户是否为校友。
普通用户和校友的视图功能基本相同。到目前为止,这是我一直在尝试做的事情:在 entries
视图函数中,我添加了一些行来检查校友成员。如果某位博客作者是校友,将HttpResponsePermanentRedirect
转为blogs/alumni/alumni_author/
,由于渲染部分相同,调用相同的entries
视图函数。所以基本上,我的entries
函数正在尝试检查成员类型,为普通成员和校友成员呈现视图。
【问题讨论】:
在我看来,您只需要使用url(r'^alumni/(?P<blog_author>[^/]+)/$', 'entries', name='blog_alumni'),
设置一个网址,然后当然不要进行重定向。
【参考方案1】:
您可以使用可选的第三个参数从 urlconf 向视图发送一个标志:
url(r'^alumni/(?P<blog_author>[^/]+)/$', 'entries', 'alumni': True, name='blog'),
【讨论】:
请原谅我的菜鸟。如何从我的视图函数中访问该标志? 以正常方式 - 它作为参数传递给函数,就像blog_author
一样。以上是关于将一个变量(一个标志)从 urls.py 传递给 django 中的 views.py的主要内容,如果未能解决你的问题,请参考以下文章