我有一个方法,其任务是在管理面板中重定向页面:
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)
请提示一下可能出错的代码。
答案 0 :(得分:1)
您的浏览器显示的错误消息表明您的网站陷入无限重定向循环。看看你的情况,很明显为什么:
if not request.method != 'GET':
相当于
if request.method == 'GET':
重定向始终会产生GET
请求,因此您的视图会一次又一次地重定向...
我假设您实际想要实现的是仅在没有URL参数的情况下重定向。这些存储在request.GET
中,因此您的情况将如下所示:
if not request.GET:
答案 1 :(得分:1)
如果您始终要限制显示的事件,则可能更容易覆盖get_queryset
方法而不是重定向。
class EventAdmin(admin.modelAdmin):
def get_queryset(self, request):
qs = super(EventAdmin, self).get_queryset(request)
if request.user.is_superuser:
# Allow superusers to see all events
return qs
else:
return qs.filter(date__lt=date.today())
admin.site.register(Event, EventAdmin)