Python django管理面板中的重定向不正确
我有一个方法,该方法的任务是从以下位置重定向管理面板中的页面:Python django管理面板中的重定向不正确,python,django,redirect,admin,url-redirection,Python,Django,Redirect,Admin,Url Redirection,我有一个方法,该方法的任务是从以下位置重定向管理面板中的页面: http://127.0.0.1:8000/admin/events/event/ 致: 我得到了一个信息而不是页面: The page isn’t redirecting properly 这是我的密码: 管理员 代码的第一个版本: def changelist_view(self, request, extra_context=None): if not request.method != 'GET':
http://127.0.0.1:8000/admin/events/event/
致:
我得到了一个信息而不是页面:
The page isn’t redirecting properly
这是我的密码:
管理员
代码的第一个版本:
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参数的情况下重定向。这些都存储在请求中。GET
,因此您的情况如下所示:
if not request.GET:
浏览器显示的错误消息表明您的站点陷入无限重定向循环。看看你的情况,很清楚为什么:
if not request.method != 'GET':
相当于
if request.method == 'GET':
重定向总是导致GET
请求,因此您的视图将一次又一次地重定向
我假设您真正想要实现的是仅在没有URL参数的情况下重定向。这些都存储在请求中。GET
,因此您的情况如下所示:
if not request.GET:
如果您总是想限制显示的事件,那么重写该方法而不是重定向可能会更容易
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)
如果您总是想限制显示的事件,那么重写该方法而不是重定向可能会更容易
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)
电视上有什么节目?您能否在终端中显示tracebackI GET空页的信息和此输出:
[12/Jun/2018 10:19:34]“GET/admin/events/event/?date\uu lt=2018-06-12 HTTP/1.1”302 0
终端上显示了什么?您是否可以将带有信息的tracebackI GET空页和此输出显示在以下文本中:[12/Jun/2018 10:19:34]“GET/admin/events/event/?date\uu lt=2018-06-12 HTTP/1.1”302 0
谢谢您的回答。你现在可以检查我的编辑吗?我想检查GET是否为空,我的意思是没有日期
。我更改代码,就像现在的问题一样,问题仍然存在。您正在检查“日期”,但您正在设置的参数是“日期”。另一方面,与其替换初始代码,不如添加新代码,因为现在我的答案没有任何意义。我更改了问题。现在使用q=request.GET.GET('date\u lt')
我得到一个错误:AttributeError at/admin/events/event/'NoneType'对象没有属性“has\u header”
如果您发布的代码是您的完整视图,那么如果条件不匹配,您将不会返回任何内容。您可能想从超类调用该方法,类似于return super().changelist\u视图(self,request)
我添加了:return super().changelist\u视图(self,request,extra\u context=None)
在admin.py中的方法末尾,但我得到了:'EventAdmin'对象没有属性“COOKIES”
谢谢您的回答。你现在可以检查我的编辑吗?我想检查GET是否为空,我的意思是没有日期
。我更改代码,就像现在的问题一样,问题仍然存在。您正在检查“日期”,但您正在设置的参数是“日期”。另一方面,与其替换初始代码,不如添加新代码,因为现在我的答案没有任何意义。我更改了问题。现在使用q=request.GET.GET('date\u lt')
我得到一个错误:AttributeError at/admin/events/event/'NoneType'对象没有属性“has\u header”
如果您发布的代码是您的完整视图,那么如果条件不匹配,您将不会返回任何内容。您可能希望从超类调用该方法,类似于return super().changelist\u视图(self,request)
I添加了:return super().changelist\u视图(self,request,extra\u context=None)
在admin.py中的方法末尾,但我得到:'EventAdmin'对象没有“COOKIES”属性。
我尝试过,但在页面顶部(date\u hierarchy
)我需要完整的日期。例如,在清单上,我需要日期到今天。但是在date\u hierarchy
中,我需要完整的日期。我尝试过,但在页面顶部(date\u hierarchy
)我需要完整的日期。例如,在清单上,我需要日期到今天。但是在date\u层次结构中
我需要完整的日期。