代码之家  ›  专栏  ›  技术社区  ›  Alien13

Django表单字段作为模板变量

  •  1
  • Alien13  · 技术社区  · 8 年前

    主要的问题是,是否可以以任何平滑的方式在html模板中的不同给定位置指定特定的表单字段。e、 但是,这似乎不起作用。(我发誓我在什么地方见过这个,但我只是在互联网上再也找不到了)

    我注册新用户的视图继承自UserCreationForm,看起来有点像这样:

    意见。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\u表单。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>
    

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

    提前谢谢你

    1 回复  |  直到 8 年前
        1
  •  3
  •   cMeIIIHo    8 年前

    如果我正确理解了您的问题,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 在下半部分。

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