Django 在 HttpResponseRedirect 期间引发 404 错误,但刷新后显示当前页面
Django raises 404 error during HttpResponseRedirect but after refreshing, shows the current page
我有一个名为 'Read Later' 的页面,其中存储了用户稍后阅读的帖子。我在导航栏上有稍后阅读。现在,当用户没有阅读稍后的帖子并单击“稍后阅读”时,用户将被重定向回原始页面。我有一个基于函数的 def 用于稍后阅读。
views.py :
def show_readlater(request, *args):
global redirect
global redirect_lock
global return_address
if not(redirect_lock):
redirect = None
else:
redirect_lock = False
if not(request.user.is_authenticated()):
raise PermissionDenied
else:
user_instance = User.objects.get(username = request.user.username)
userprofile_instance = UserProfile.objects.get(user = user_instance)
readlater_objects = ReadLaterList.objects.all()
readlater_list = []
count = 0
for x in readlater_objects:
if x.username == request.user.username:
readlater_post = Post.objects.get(slug = x.slug)
readlater_list.append(readlater_post)
count = count + 1
if count == 0 :
redirect = "no_readlater"
redirect_lock = True
return HttpResponseRedirect(return_address) # The user is redirect back to the original page
post_title = "Read Later"
template = "posts/show_posts.html"
dictionary = {
"total_posts" : readlater_list,
"title" : post_title,
"count" : count,
"redirect" : redirect,
}
return render(request, template, dictionary)
这里,redirect
是在原来的页面显示没有稍后阅读的信息。
问题是,当重定向发生时,Django 说找不到页面,但在刷新页面时加载。
发生了什么事?
确保在全局变量 "return_address" 中指定的 url 是正确的并且在你的 app/urls.py.
中指定
首先改变这个
global redirect
global redirect_lock
global return_address
到
request.session['redirect']= redirect
对于所有全局变量
并使用 redirect
代替 HttpResponseRedirect
我有一个名为 'Read Later' 的页面,其中存储了用户稍后阅读的帖子。我在导航栏上有稍后阅读。现在,当用户没有阅读稍后的帖子并单击“稍后阅读”时,用户将被重定向回原始页面。我有一个基于函数的 def 用于稍后阅读。
views.py :
def show_readlater(request, *args):
global redirect
global redirect_lock
global return_address
if not(redirect_lock):
redirect = None
else:
redirect_lock = False
if not(request.user.is_authenticated()):
raise PermissionDenied
else:
user_instance = User.objects.get(username = request.user.username)
userprofile_instance = UserProfile.objects.get(user = user_instance)
readlater_objects = ReadLaterList.objects.all()
readlater_list = []
count = 0
for x in readlater_objects:
if x.username == request.user.username:
readlater_post = Post.objects.get(slug = x.slug)
readlater_list.append(readlater_post)
count = count + 1
if count == 0 :
redirect = "no_readlater"
redirect_lock = True
return HttpResponseRedirect(return_address) # The user is redirect back to the original page
post_title = "Read Later"
template = "posts/show_posts.html"
dictionary = {
"total_posts" : readlater_list,
"title" : post_title,
"count" : count,
"redirect" : redirect,
}
return render(request, template, dictionary)
这里,redirect
是在原来的页面显示没有稍后阅读的信息。
问题是,当重定向发生时,Django 说找不到页面,但在刷新页面时加载。
发生了什么事?
确保在全局变量 "return_address" 中指定的 url 是正确的并且在你的 app/urls.py.
中指定首先改变这个
global redirect
global redirect_lock
global return_address
到
request.session['redirect']= redirect
对于所有全局变量
并使用 redirect
代替 HttpResponseRedirect