django - 如何从一个视图中在每个模板中显示 django 成功消息?
问题描述
在这里,我有一个功能newsletter
将在项目中的每个模板中使用。这里的问题是成功消息仅显示在联系页面模板中。我已将 django 消息标记放在唯一中。它在页面{{message}}
中工作base.html
正常contact.html
.联系人和时事通讯的相应消息在contact_page
模板中正确显示,但在其他模板中不正确。其他模板也扩展base.html
为contact.html
.
我如何在每个模板中显示时事通讯成功消息。我不想{{message}}
在每个模板中都写。有什么解决方案吗?
视图.py
def contact(request):
form = ContactForm()
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Your message has been sent successfully.')
return redirect('contact:contact_page')
return render(request, 'contact/contact_page.html', {'form': form})
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.META['HTTP_REFERER'])
return render(request, 'base.html', {'news_form': form})
解决方案
创建 base.html 仅包含指向样式表和 js 文件的链接。在那里你可以放置
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% block content %}{% endblock %}
就在块内容之上,并从中扩展所有其他模板。所以最好制作一个home.html
文件并将新闻信呈现到那里,并将其从base.html
. 参考文档
推荐阅读
- javascript - 如何在不将 html 绑定到方法的情况下更新 Vue.js 数据?
- android - 如何在android中获取Imageview位置
- c - 如何在微控制器按钮上使这个 while 循环更快?
- javascript - 如何将 Backbone/RequireJS 模块导入 React/Webpack 应用程序
- verilog - 验证;不能在 $display 中使用“字符串”类型
- python - 如何合并熊猫中的数据框,这些数据框有一些共同的列,一些没有丢失任何数据
- json - Jolt Transformation Spec 中的值相乘
- reactjs - 谷歌云平台监控和反应
- r - ggplot2: scales="free_y" 但保持 x 轴线
- c - malloc 的这个实现是一个凹凸分配器吗?