0

我想知道以下是否可能并需要一个例子。

我想创建一个呈现登录表单的模板标签。能不能做到,请指教。

这背后的原因是我有一个登录表单,需要在我网站的每个页面上。我已经决定这会更好作为我可以包含的标签。我想使用 forms.py 中的表单,而不是对其进行硬编码。

IE

from django import template
from accounts.forms import AuthenticationForm

register = template.Library()


 def authentication_form():
    render this form == AuthenticationForm() ?????
4

1 回答 1

4

您需要创建一个包含标签,该标签是呈现模板的标签。

首先在一个名为的文件中定义您的模板_tag_auth_form.html

<form method="post" action="{{ action }}">
  {% csrf_token %}
  {{ form }}
  <input type="submit" />
</form>

然后,您的模板标签只需使用适当的上下文变量呈现上述模板:

from django import template
from accounts.forms import AuthenticationForm

register = template.Library()

@register.inclusion_tag('_tag_auth_form.html')
def authentication_form():
    return {'form': AuthenticationForm(), 'action': '/some/url'}
于 2013-10-20T07:50:25.633 回答