首页 > 解决方案 > 在 django 管理面板中重定向不正确

问题描述

我有一个方法,其任务是从以下位置重定向管理面板中的页面:

http://127.0.0.1:8000/admin/events/event/

至:

http://127.0.0.1:8000/admin/events/event/?date__lt=2018-6-11

我得到了一个信息而不是页面:

The page isn’t redirecting properly

这是我的代码:admin.py

第一版代码:

def changelist_view(self, request, extra_context=None):
    if not request.method != 'GET':
        url = '{}?date__lt={}'.format(reverse('admin:events_event_changelist'), date.today())
        return HttpResponseRedirect(url)

修改后的代码

def changelist_view(self, request, extra_context=None):
    q = request.GET.get('date')
    if not q:
        url = '{}?date__lt={}'.format(reverse('admin:events_event_changelist'), date.today())
        return HttpResponseRedirect(url)

请提示哪里可能是错误的代码。

标签: pythondjangoredirectadminurl-redirection

解决方案


您的浏览器显示的错误消息表明您的网站陷入了无限重定向循环。看看你的情况,很清楚为什么:

if not request.method != 'GET':

相当于

if request.method == 'GET':

重定向总是会导致GET请求,因此您的视图将一次又一次地重定向......

我假设您真正想要实现的是仅在没有 URL 参数的情况下进行重定向。这些存储在 中request.GET,因此您的情况如下所示:

if not request.GET:

推荐阅读