Django将字段表示为模板变量

问题描述 投票:1回答:1

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

我对注册新用户的看法是继承自UserCreationForm,看起来像这样:

views.朋友

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>

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

先感谢您

django forms templates
1个回答
3
投票

如果我已经正确理解了你的问题,那么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

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

© www.soinside.com 2019 - 2024. All rights reserved.