[这里,我在每页中都有一个新闻通讯表单,因此我将其放置在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})
该请求确实具有Meta字典。 META词典的HTTP_REFERER密钥存储您的“表单”页面的URL。
return redirect(request.META['HTTP_REFERER'])
或您也可以使用
return redirect(request.META.get('HTTP_REFERER')
在POST或GET请求后将您重定向到同一页面