【问题标题】:Pass a variable ( a flag ) from urls.py to views.py in django将一个变量(一个标志)从 urls.py 传递给 django 中的 views.py
【发布时间】: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'), 设置一个网址,然后当然不要进行重定向。

标签: django redirect django-views django-urls


【解决方案1】:

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

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

【讨论】:

  • 请原谅我的菜鸟。如何从我的视图函数中访问该标志?
  • 以正常方式 - 它作为参数传递给函数,就像blog_author一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 2021-11-10
  • 2011-09-24
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多