我正在学习Django,但由于模板语法错误而被阻止。
我的views.py中有此功能:
def AccountUpdateView(request):
template_name='portal/accountupdate.html'
context = {"forms":UserForm}
return render(request,template_name,context)
有我的模板:
<form action="/account/update/" method="POST">
<ul>
{% csrf_token %}
{% for form in forms %}
<li>{{form.label}}
<input type="text" name="{{form.name}}" maxlength="32" required="" id="id_{{form.name}}" value="{{PLEASE HELP ME !!!}}">
</li>
{%endfor%}
</ul>
<input type="submit" value="Metre a jour" />
</form>
好吧,我正在尝试通过调用{{user}}在django中认识的当前注册用户获取模板上每种表单的“值” 我会自动放置每种表单的值。
我认为一种解决方案是使用form.name(例如“用户名”的示例),并在值中调用类似以下内容的东西:
user.form.username
这是行不通的,我知道我梦到希望这个异国情调的电话行不通...
如果有解决方案:)
谢谢你!
答案 0 :(得分:1)
您根本不应该这样做。如果您要求,Django将自动输出整个字段。
首先,请为您的对象使用专有名称。其次,如果要使用当前用户的数据预填充表单,请在视图中进行。注意,您还需要处理发布的数据:
def AccountUpdateView(request):
template_name='portal/accountupdate.html'
if request.method == 'POST':
form = UserForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
return redirect('/')
else:
form = UserForm(instance=request.user)
context = {"form":form}
return render(request,template_name,context)
现在,在模板中使用适当的值和属性:
{% for field in form %}
<li>{{ field.label_tag }}
{{ field }}
{{ field.errors }}</li>
{% endfor %}