如果在提交期间发生任何错误,如何防止重置或清除django表单字段?

时间:2017-04-18 07:22:47

标签: javascript python django forms

我正在使用django registration-redux 进行用户注册。 当我输入相同的用户ID时,它显示错误并清除表单的所有输入字段。如何防止出现该错误但输入字段不应被清除。

<form method="POST" role="form" class="form-horizontal">
                {% csrf_token %}
            <div class="form-group">
                <label class="col-sm-2 lab" for="id_username">Username *</label>
                <div class="col-sm-10">
                    <input  name="username" id='id_username' class='form-control' placeholder='Username' minlength="5" maxlength="15" type='text' required></div>
                </div>

            <div class="form-group">
                <label class="col-sm-2 lab" for="id_email">E-Mail *</label>
                <div class="col-sm-10" >
                    <input class='form-control' name="email" id='id_email' placeholder='user@mydomain.com' pattern="(^[a-zA-Z0-9_.+-]+@[a-zA-Z]+\.com$)|(^[a-zA-Z0-9_.+-]+@[a-zA-Z]+\.org$)|(^[a-zA-Z0-9_.+-]+@[a-zA-Z]+\.co\.in$)" maxlength="200" type='email' required>
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-2 lab">Password *</label>
                <div class="col-sm-10">
                    <input class="form-control" name="password1" id="id_password1" placeholder="Password" minlength="8" maxlength="15" type="password" required>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 lab2">Password Confirmation *</label>
                <div class="col-sm-10">
                    <input class="form-control" name="password2" id="id_password2" placeholder="Confirm Password" minlength="8" maxlength="15" type="password" required>
                </div>
            </div>
 <button  type="submit" value= "register">Register</button>
</form>

我应该使用java脚本还是应该帮助我什么?

1 个答案:

答案 0 :(得分:0)

理想情况下,您的表单应保留条目。根据我的推断,似乎您可能没有在模板中使用视图传递的form

以下是有关如何更新模板的示例:

<form action="/action/" method="POST">
        {% csrf_token %}
        <div class="form">
            <br />
            {{ form.username}}
            <br />
            <input type="submit" name="submit">
        </div>
    </form>

现在,在您的操作视图中,您可以轻松传递表单中的变量。类似的东西:

def action(request):
    if request.method == "POST":
        form = CustomForm(request.POST)
        if form.is_valid():
            form.save()
        else:
            print("form.errors:", form.errors)
    else:
        form = CustomForm()
    ResponseDict = {"username": username}
    return render_to_response("UserName.html", ResponseDict, 
        context_instance = RequestContext(request))

有关详情,请参阅 - Displaying form using template

主要的本质是你去看你的视线然后做必要的电话。请注意,无论您在何处呈现html,您都会传递表单值。

希望这会有所帮助。