将一个变量(一个标志)从 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/authornameblog/alumni/authorname/foo-post/。我在我的用户模型中添加了一个字段,该字段将指示用户是否为校友。

普通用户和校友的视图功能基本相同。到目前为止,这是我一直在尝试做的事情:在 entries 视图函数中,我添加了一些行来检查校友成员。如果某位博客作者是校友,将HttpResponsePermanentRedirect转为blogs/alumni/alumni_author/,由于渲染部分相同,调用相同的entries视图函数。所以基本上,我的entries 函数正在尝试检查成员类型为普通成员和校友成员呈现视图

【问题讨论】:

在我看来,您只需要使用url(r'^alumni/(?P&lt;blog_author&gt;[^/]+)/$', 'entries', name='blog_alumni'), 设置一个网址,然后当然不要进行重定向。 【参考方案1】:

您可以使用可选的第三个参数从 urlconf 向视图发送一个标志:

url(r'^alumni/(?P<blog_author>[^/]+)/$', 'entries', 'alumni': True, name='blog'),

【讨论】:

请原谅我的菜鸟。如何从我的视图函数中访问该标志? 以正常方式 - 它作为参数传递给函数,就像blog_author一样。

以上是关于将一个变量(一个标志)从 urls.py 传递给 django 中的 views.py的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将变量传递给 Django 中的通用视图?

django:将 url 作为参数传递

如何将变量结构类型传递给 C 中的函数

第三百零四节,Django框架,urls.py模块——

如何将编译器标志从 clang 传递给 nvcc

为啥 npm 将命令行标志直接传递给我的脚本?