如何在不通过视图在所有页面中发送表单的情况下从 django 布局(如“base.html”)获取表单数据?
Posted
技术标签:
【中文标题】如何在不通过视图在所有页面中发送表单的情况下从 django 布局(如“base.html”)获取表单数据?【英文标题】:How can i get form data from django layouts (like 'base.html') without sending forms in all page through views? 【发布时间】:2019-04-03 19:30:06 【问题描述】:许多模板都是从 base.html 扩展而来的。 base.html 有一个从用户那里获取电子邮件的时事通讯表单。有什么简单的方法可以从“base.html”中获取表单数据以进行查看。 (通过视图在所有页面中发送表单是可能的但我认为有一个简单好看的想法)
【问题讨论】:
使用上下文处理器或使用 jquery 获取数据并放入表单并发送到 django 【参考方案1】:使用上下文处理器来执行此操作:
在您的根项目中添加一个新的.py
文件,将其命名为context_processors.py
。
context_processors.py
from app.forms import GlobalForm
def global_variables(request):
form = GlobalForm()
context = 'global_form':form
return context
然后在 settings.TEMPLATES 中添加上下文处理器作为最后一行。
# stuff
'django.contrib.messages.context_processors.messages'
'project_name.context_processors.global_variables'
所以,global_form
在所有模板中都可用
【讨论】:
要使用什么表单动作? 每个视图都必须处理请求,例如,如果您在主页中,则必须从该视图中检索数据。并且表单操作可以保持为空form action=''
以指示当前的url/view
form action='' 正在加载空白页面以上是关于如何在不通过视图在所有页面中发送表单的情况下从 django 布局(如“base.html”)获取表单数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不选择任何行的情况下从 iphone 的表格视图单元格中读取值
如何在不刷新页面的情况下从数据库中的textarea添加数据[重复]
如何在不重置其当前状态的情况下从一个视图控制器到自身进行转场?