主要问题是,是否可以以任何流畅的方式在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>
这可能是个愚蠢的问题,但我很好奇。
提前谢谢
答案 0 :(得分: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。
可以使用自定义类和小部件呈现每个字段(每个标签,输入,错误元素)。