如何在不通过视图在所有页面中发送表单的情况下从 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 的表格视图单元格中读取值

如何在不使用 foreach 循环的情况下从视图访问模型

如何在不刷新页面的情况下从数据库中的textarea添加数据[重复]

如何在不重置其当前状态的情况下从一个视图控制器到自身进行转场?

如何在不使用自动模型表单的情况下从 Django 的文本框中获取数据?

如何在不提交 HTML 表单的情况下从数据库中获取数据? [复制]