Django模板语言语法

时间:2018-11-30 19:47:34

标签: django django-templates

我正在学习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

这是行不通的,我知道我梦到希望这个异国情调的电话行不通...

如果有解决方案:)

谢谢你!

1 个答案:

答案 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 %}