python - 在 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)
请提示哪里可能是错误的代码。
解决方案
您的浏览器显示的错误消息表明您的网站陷入了无限重定向循环。看看你的情况,很清楚为什么:
if not request.method != 'GET':
相当于
if request.method == 'GET':
重定向总是会导致GET
请求,因此您的视图将一次又一次地重定向......
我假设您真正想要实现的是仅在没有 URL 参数的情况下进行重定向。这些存储在 中request.GET
,因此您的情况如下所示:
if not request.GET:
推荐阅读
- python - 在python中创建一个例程
- laravel - 产品未在 Laravel 中与关系显示
- cassandra - Apache Cassandra 库存数据模型设计
- tomcat - 可以在 Ant 中延迟或阻止属性评估吗?
- javascript - 如何让更多用户使用 casl react 编辑文章
- angular-cli - 如何解决 Angular 安装问题?
- corda - truststore 是如何从 bridge 动态转移到 float 的?
- javascript - 如果视频在视口中/不在视口中,则自动播放/暂停视频
- python - Few Shot Learning / Siamese Network - 3 通道输入图像
- vim - 尽管使用 vim-plug 成功安装了 Vim 颜色方案但没有出现