【问题标题】:Django request inside urlpatternsurlpatterns 中的 Django 请求
【发布时间】:2015-04-11 16:49:44
【问题描述】:

我有一些自定义变量传递给来自自定义中间件的请求。现在我需要包含一些基于自定义变量值的应用程序 url。所以我想得到这样的东西:

urlpatterns = patterns('',
    if request.myvar != False:
        url(r'^', include('specialapp.urls')),
    url(r'^', include('basicapps.urls')),
)

【问题讨论】:

  • 由于您依赖于 request 对象 - 每个页面请求更多,您可能不想在那个时间点包含/排除可用的 URL。您可能希望在视图中处理该问题 -(重定向/404 等)或让中间件为您执行此操作。
  • 我有一个应用程序可以解决这个问题。如果自定义请求变量为 True 但不知道如何,我只想包含该应用程序。
  • docs.djangoproject.com/en/1.8/topics/http/urls/… - 在中间件的 process_request 方法中将 request.urlconf 设置为备用 url 配置。

标签: django django-views django-urls


【解决方案1】:

虽然@knbk 评论似乎是正确的方法,但还有另一种方法可以解决您的问题:

urlpatterns = patterns('',
    url(r'^', include('basicapps.urls')),
)

if request.myvar != False:
    urlpatterns.append(url(r'^', include('specialapp.urls')))

顺便说一句,它不会改变你的意图。我只是在urlpatterns 元组之外检查request.myvar 并在request.myvar 不等于False 时附加正确的url。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2021-07-27
    • 2018-09-12
    • 2012-04-13
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2012-09-08
    相关资源
    最近更新 更多