0

我在 Wagtail Form Builder 中创建了一个订阅表单,当从其模板 subscribe_form.html 提交表单时,提交成功。

<form action="{% pageurl page %}" method="POST">
     {% csrf_token %}
    <div class="shop-subscribe bg-color-green margin-bottom-40">
        <div class="container">
                <div class="row">
                    <div class="col-md-8 md-margin-bottom-20">
                            <h2>Subscribase para mantenerse<strong> informado</strong></h2>
                    </div>




                    <div class="col-md-4">
                            <div class="input-group">


                             <input type="text" class="form-control" placeholder="Correo Electronico..." {{ form.subscribase }}>
                                    <span class="input-group-btn">
                                            <button class="btn" type="submit"><i class="fa fa-envelope-o"></i></button>
                                    </span>

                            </div>

                                {{ form.subscribase.errors }}
                        </div>
                </div>
        </div><!--/end container-->
    </div>

 </form>

但是,当我使用 include 标记将其包含在其他页面上时,它不会提交,并且我没有收到任何错误消息。

{% include "home/subscribe_form.html" %}

有人可以就使用包含标签时可能导致表单不提交的原因提供建议吗?

4

1 回答 1

1

要详细说明其他人所说的话,为此使用自定义模板标签是一种简单的方法。包含标签允许您调用模板标签并将 args/kwargs 传递给它们,执行逻辑,然后使用该逻辑呈现模板以包含在呈现的页面中。

在项目的 app 目录中创建一个文件夹,创建一个名为 的目录,在该目录templatetags中创建一个空文件__init__.py(Django 使用它来知道该文件应该在启动时运行),然后在新的目录名称中创建另一个文件my_custom_tags.py(或无论你想用什么)。其中——

from django.template import Library

register = Library()

@register.inclusion_tag("home/subscribe_form.html")
def subscription_form(form):
    return {'form':form}

现在,在您的主模板中:

{% load my_custom_tags %}
{# (or whatever you named your file for custom tags #}

{# where you want to include your tag, pass the form from the main template; be sure to pass your form variable from your context data #}
{% subscription_form form %}

你已经渲染了你的表单。由于您是从上下文传递表单,因此在模板标记之外执行的任何逻辑仍然完好无损。当您有一个通用模板用于多个位置的元素但需要在视图之外执行逻辑(或者,在 Wagtail 的情况下,嵌入模型中的页面/片段逻辑)时,这尤其有用。

于 2016-05-24T16:36:27.633 回答