【问题标题】:Django form fields as template variablesDjango 表单字段作为模板变量
【发布时间】:2018-06-05 23:27:07
【问题描述】:

主要问题是是否可以以任何流畅的方式在 html 模板中的不同给定位置指定特定的表单字段。例如{{ form.password }} 但是,这似乎不起作用。 (我发誓我在某个地方看到过这个,但我在网上找不到了)

我注册新用户的观点是从 UserCreationForm 继承的,看起来像这样:

views.py

def signup(request):
if request.method == "POST":
    form = UserCreationForm(request.POST)
    if form.is_valid():
        form.save()
        username = form.cleaned_data.get('username')
        raw_password = form.cleaned_data.get('password1')
        user = authenticate(username=username, password=raw_password)
        login(request, user)
        return redirect('home')

else:
    form = UserCreationForm()
return render(request, 'core/authentication/registration_form.html', {'form': form})

它将这个表单直接发送到模板registration_form.html,我希望它是这样工作的:

<form class="form" method="POST" action="">
    <div class="card-body">
        <div class="input-group form-group-no-border">
            <span class="input-group-addon">
                <i class="now-ui-icons users_circle-08"></i>
            </span>
            {{ form.first_name }}
       </div>
    </div>

这就是它的实际工作方式(目前):

<form class="form" method="POST" action="">
    <div class="card-body">
        <div class="input-group form-group-no-border">
            <span class="input-group-addon">
                <i class="now-ui-icons users_circle-08"></i>
            </span>
            <input type="text" class="form-control" placeholder="First Name...">
       </div>
    </div>

这可能是个愚蠢的问题,但我很好奇。

提前谢谢你

【问题讨论】:

  • 可以定义单个字段,您的第一个示例是正确的。最好这样做,而不是对字段进行编码。您是从UserCreationForm 继承的具有相同名称的表单?发布您的表单代码。

标签: django forms templates


【解决方案1】:

如果我正确理解了您的问题,django 说您应该手动渲染 django 表单字段。

{{ form.non_field_errors }}  # here django renders errors which do not belong to any field
<div>
    {{ form.field_1.errors }}  # here django renders errors which belong to field_1
    {{ form.field_1.label_tag }}  # label element
    {{ form.field_1 }}  # input element
</div>

# some html

<div>
    {{ form.field_2.errors }}
    {{ form.field_2.label_tag }}
    {{ form.field_2}}
</div>

您可以在下半部分阅读此here

每个字段(每个标签、输入、错误元素)都可以使用自定义类和小部件呈现。

【讨论】:

  • 哦,是的,我现在感觉非常愚蠢哈哈。圣诞快乐
猜你喜欢
  • 2011-06-26
  • 2022-01-05
  • 2012-03-02
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多