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