【问题标题】:django middleware redirect doesn't render pagedjango 中间件重定向不呈现页面
【发布时间】:2013-09-04 08:54:41
【问题描述】:

我正在编写自定义中间件,如果满足条件,我想重定向到另一个页面。我的代码如下所示:

class SettingHandler(object):  

    def process_view(self, request, view_func, view_args, view_kwargs): 
        if request.user.paid: 
            return view_func(request, *view_args, **view_kwargs)

        else:
            return HttpResponseRedirect(reverse('setting')) 

我的 urls.py 看起来像这样:

url(r'^setting/$', 'customers.settings', name='setting'),

当达到重定向条件时,页面不会呈现。控制台中的输出如下所示:

"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0

如何重定向到所需的页面?

【问题讨论】:

  • 你能出示你的urls.py吗?

标签: django django-views django-urls django-middleware


【解决方案1】:

这将解决您的直接问题:

if request.setting or request.path == '/setting/':

但它很老套。可能有更好的方法,但这取决于您要完成的任务 - IOW,您要测试的条件是什么?

【讨论】:

  • 请求属性实际上基于用户和付费标志。我认为不小心命名它设置改变了一些事情。
【解决方案2】:

浏览器的实际错误是“重定向循环”。

我放置了一个排除案例以使其脱离循环并且一切正常

【讨论】:

  • 我也面临同样的问题。你能举一些例子来排除情况吗?
猜你喜欢
  • 1970-01-01
  • 2021-01-08
  • 2021-03-04
  • 2019-03-09
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
相关资源
最近更新 更多