当前位置: 首页 > 知识库问答 >
问题:

表单验证-注册

翁翰墨
2023-03-14

我有麻烦处理错误在我的注册表格特别是与密码1

class RegisterForm(UserCreationForm):
    class Meta():
        model = User
        fields = ('username', 'email', 'password1', 'password2')
        widgets = {
            'username': forms.TextInput(attrs={'class':  'form-control', 'name':'username' }),
            'email': forms.EmailInput(attrs={'class':  'form-control' }),
        }

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)
        self.fields['password1'].widget = forms.PasswordInput(attrs={'class': 'form-control', 'name':'password'})
        self.fields['password2'].widget = forms.PasswordInput(attrs={'class': 'form-control'})

class UserProfileForm(forms.ModelForm):
        class Meta():
            model = UserProfile
            fields = ('location', 'favourite_activity')
            widgets = {
                'favourite_team': forms.TextInput(attrs={'class':  'form-control' }),
            }

以下是我的看法。py:

def registerView(request):
    regForm = RegisterForm()
    proForm = UserProfileForm()
    
    if request.method == 'POST':
        regForm = RegisterForm(request.POST)
        proForm = UserProfileForm(request.POST)
        
    if regForm.is_valid() and proForm.is_valid():
        user = regForm.save(commit=True)
        profile = proForm.save(commit=False)
        profile.user = user
        profile.save()
    
        username = request.POST.get('username')
        password = request.POST.get('password1')

        user = authenticate(username=username, password=password)

        if user:
            if user.is_active:
                login(request, user)
                return redirect ('timeline')
        else:
            return HttpResponse("There was a problem signing you up!")

    regDic = {'regForm': regForm, 'proForm': proForm}
    return render(request, 'person/register.html', context=regDic)

最后是模板文件

<form method="POST">
  {% csrf_token %}
  <div class="form-group">
    <label>{{ regForm.username.label }}</label>
    {{ regForm.username }}          
  </div>

  <div class="form-group">
    <label>Email address</label>
    {{ regForm.email }}
  </div>

  <div class="form-group">
    <div class="d-flex justify-content-between mg-b-5">
      <label class="mg-b-0-f">Password</label>
    </div>
    {{ regForm.password1 }}
  </div>
  <div class="form-group">
    <div class="d-flex justify-content-between mg-b-5">
       <label class="mg-b-0-f">Confirm Password</label>
    </div>
    {{ regForm.password2 }}
  </div>
  <div class="form-group">
    <div class="d-flex justify-content-between mg-b-5">
      <label class="mg-b-0-f">Favourite Team</label>
    </div>
    {{ proForm.favourite_team }}
  </div>
  <div class="form-group tx-12">
              By clicking <strong>Create an account</strong> below, you agree to our terms of service and privacy statement.
  </div><!-- form-group -->
  <input type="submit" value="Create Account">
              
  <!-- <button type="submit" class="btn btn-brand-02 btn-block">Create Account</button> -->
</form>

<div class="divider-text">or</div>
  <button class="btn btn-outline-facebook btn-block">Sign Up With Facebook</button>
  <button class="btn btn-outline-twitter btn-block">Sign Up With Twitter</button>
<div class="tx-13 mg-t-20 tx-center">Already have an account? <a href="{% url 'person:login' %}">Sign In</a></div>
</div>
  {{ regForm.errors }}
  {{ proForm.errors }}
</div>

一切正常,我可以在用户注册时对他们进行身份验证,登录并重定向他们,但如果注册表单中存在错误,那么我无法让用户了解哪个字段负责并在提交之前进行更正。

你知道如何确保显示密码吗

共有1个答案

居英资
2023-03-14

您只需指定custm错误消息,如下所示:

class RegisterForm(UserCreationForm):
    username = forms.CharField(error_messages={'required': 'error message here'})

    class Meta:
        model = User

是的,如果您的元类中已经有了username字段,我相信这只会覆盖默认字段,不会创建重复字段。

如果需要进一步自定义,可以执行以下操作:

username_errors = {
    'required': 'This field is required',
    'invalid': 'Enter a valid value'
}

class RegisterForm(UserCreationForm):
    username = forms.CharField(error_messages=username_errors)
    # ... and don't forget your Meta class

文件,参考文献1和参考文献2。

 类似资料:
  • CodeIgniter 提供了一个全面的表单验证和数据预处理类以帮助缩减你所写的代码。 概述 表单验证指南 表单 成功页面 控制器 设置验证规则 使用一个数组设置验证规则 级联规则(Cascading Rules) 预处理数据(Prepping Data) 重新填充表单(Re-populating the Form) 回调 设置错误信息 更改错误定界符 翻译表单域名字 独立显示错误 将一系列验证规

  • 表单请求验证类 必须 使用 表单请求 - FormRequest 类 来处理控制器里的表单验证。 验证类的 authorize 绝不 使用 authorize() 方法来做用户授权,用户授权我们会单独使用 Policy 授权策略 来实现。 使用基类 所有 FormRequest 表验证类 必须 继承 app/Http/Requests/Request.php 基类。基类文件如下: <?php n

  • 本文向大家介绍AngularJS实现注册表单验证功能,包括了AngularJS实现注册表单验证功能的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了案例: 注册表单验证,供大家参考,具体内容如下 需要使用的两张图片: dui.gif:cuo.gif: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 主要内容:PHP 表单验证,文本字段,单选按钮,表单元素,PHP表单中需引起注重的地方?,如何避免 $_SERVER["PHP_SELF"] 被利用?,使用 PHP 验证表单数据,实例本章节我们将介绍如何使用PHP验证客户端提交的表单数据。 PHP 表单验证 在处理PHP表单时我们需要考虑安全性。 本章节我们将展示PHP表单数据安全处理,为了防止黑客及垃圾信息我们需要对表单进行数据安全验证。 在本章节介绍的HTML表单中包含以下输入字段: 必须与可选文本字段,单选按钮,及提交按钮: 查看代码 »

  • 主要内容:使用 JavaScript 进行表单验证,必填字段验证,数据格式验证表单是 Web 应用(网站)的重要组成部分,通过表单可以收集用户提交的信息,例如姓名、邮箱、电话等。由于用户在填写这些信息时,有可能出现一些错误,例如输入手机号时漏掉了一位、在输入的内容前后输入空格、邮箱的格式不正确等。为了节省带宽同时避免这些问题对服务器造成不必要的压力,我们可以使用 JavaScript 在提交数据之前对数据进行检查,确认无误后再发送到服务器。 使用 JavaScript 来验

  • 基本用法 Lumen 和 Laravel 一样,通过 Validation facade 让您可以简单、方便的验证数据正确性及查看相应的验证错误信息。 基本验证例子 $validator = Validator::make( ['name' => 'Dayle'], ['name' => 'required|min:5'] ); 上文中传递给 make 这个方法的第一个参数用来设