如何在成功执行POST请求后重定向到同一页面?

问题描述 投票:0回答:1

[这里,我在每页中都有一个新闻通讯表单,因此我将其放置在base.html中,并编写了这样的视图。我想要的是,如果用户从主页处理请求,则应将其重定向到主页,如果用户从服务页面发送了请求,则应将其重定向到服务页面,依此类推。

使用request.path_info,这将返回到/newsletter/路径,但我不希望这样。我想重定向到发送请求的模板。

base.html

 <form action="{% url 'newsletter' %}" method="POST" class="form-inline">
             {% csrf_token %}
             <input type="text" placeholder="Email Address" name="email" class="form-control">
             <button class="btn btn-primary btn--subcribe" type="submit">Subcribe</button>
           {% if form.email.errors %}<b class="text text-danger">
</form>

我尝试过使用request.path_info这样的代码

def newsletter(request):
    form = NewsletterForm()
    if request.method == "POST":
        form = NewsletterForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, 'Thank you for your subscription.')
            return redirect(request.path_info)
    return render(request, 'base.html', {'form': form})
django django-views
1个回答
0
投票

该请求确实具有Meta字典。 META词典的HTTP_REFERER密钥存储您的“表单”页面的URL。

return redirect(request.META['HTTP_REFERER']) 

或您也可以使用

return redirect(request.META.get('HTTP_REFERER')

在POST或GET请求后将您重定向到同一页面

© www.soinside.com 2019 - 2024. All rights reserved.