【问题标题】:Django: Form in base templateDjango:基本模板中的表单
【发布时间】:2012-01-03 16:19:48
【问题描述】:

你好 Stackoverflow 的人,

在我的 Django 项目中,我创建了一个表单来注册用户。可以通过特定的 url -> view 方法调用此表单。一旦用户填写了表单,按下提交,同样的视图方法将被调用,如果 form.is_valid() 为真,那么......只是一个标准的表单,没什么特别的。

现在,我想在每个页面上集成这个小表单,因此我想将它添加到基本模板中。我读过我可以通过 context_processor 填充表单变量,但是我可以在提交表单后定义流程吗?

我已经创建了 context_processor.py(如下),将 context_processor 添加到设置中的 TEMPLATE_CONTEXT_PROCESSOR 目录中(如here 所述):

from app.forms import Form

def registration_form(request):
return {
        registration_form : Form()
        }

首先,不会显示表单变量。 其次,如何操作表单提交?

我想我误解了 Django 的 context_processor,并且对整个过程中的 cmets 感到非常高兴。

谢谢!

【问题讨论】:

    标签: django forms templates


    【解决方案1】:

    不是创建上下文处理器,而是为此目的创建模板标签并将标签放在 base.html 中

    对于表单提交和显示错误,请使用 ajax 和前端验证。

    【讨论】:

      【解决方案2】:

      您如何尝试访问模板中的表单?你可能不想使用函数名作为字典键,也许你想要

      return {
          'registration_form': Form(),
      }
      

      不确定您所说的操作表单提交是什么意思,但我想您需要上下文处理器中的所有表单处理逻辑

      if request.POST:
          form = Form(request.POST)
          # validate etc
      

      【讨论】:

      • +1... 他需要添加到TEMPLATE_CONTEXT_PROCESSORS
      • 感谢您的回复。现在显示表单。 '' 有所作为。关于验证:如果表单嵌入在基本模板中,如何将可能的错误返回给表单? render_to_response('base.html', ...) 不起作用。处理它的最佳方法是什么?
      • 都是在表单中处理的。尝试在模板中包含表单的最基本方法以查看默认值:{{ form.as_p }}
      • 你在哪里验证它?我让它显示,但功能不起作用
      猜你喜欢
      • 2015-09-29
      • 2021-09-03
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 2021-05-27
      • 2019-01-02
      • 2017-08-13
      • 2013-05-15
      相关资源
      最近更新 更多