本文将带您了解关于如何在djangoauth密码验证器旁边使用自定义密码验证器?的新内容,同时我们还将为您解释验证密码的代码的相关知识,另外,我们还将为您提供关于Angular7电话号码验证器模式、A
本文将带您了解关于如何在django auth密码验证器旁边使用自定义密码验证器?的新内容,同时我们还将为您解释验证密码的代码的相关知识,另外,我们还将为您提供关于Angular 7电话号码验证器模式、Angular2如何将参数传递给自定义表单控件验证器?、angularjs 表单密码验证自定义指令实现代码、Angular如何在跨字段验证器中直接调用其它独立的验证器的实用信息。
本文目录一览:- 如何在django auth密码验证器旁边使用自定义密码验证器?(验证密码的代码)
- Angular 7电话号码验证器模式
- Angular2如何将参数传递给自定义表单控件验证器?
- angularjs 表单密码验证自定义指令实现代码
- Angular如何在跨字段验证器中直接调用其它独立的验证器
如何在django auth密码验证器旁边使用自定义密码验证器?(验证密码的代码)
正如上面提到的问题,我将尝试在注册过程中使用一些额外的规则来验证密码。额外的规则应该是:如果密码至少包含一位数字,一个字母和一个特殊字符,则该密码是有效的。
解决这个问题的方法是创建一个名为validators.py的文件。
from django.core.exceptions import ValidationError
class CustomPasswortValidator:
def validate(value):
# check for digit
if not any(char.isdigit() for char in value):
raise ValidationError(_('Password must contain at least 1 digit.'))
# check for letter
if not any(char.isalpha() for char in value):
raise ValidationError(_('Password must contain at least 1 letter.'))
# check for special character
special_characters = "[~\!@#\$%\^&\*\(\)_\+{}\":;'\[\]]"
if not any(char in special_characters for char in value):
raise ValidationError(_('Password must contain at least 1 letter.'))
我的自定义注册表单如下所示:
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class RegistrationForm(UserCreationForm):
first_name = forms.CharField(max_length=30,required=False,help_text='Optional.')
last_name = forms.CharField(max_length=30,help_text='Optional.')
email = forms.EmailField(max_length=254,help_text='Required. Inform a valid email address.')
class Meta:
model = User
fields = ('username','first_name','last_name','email','password1','password2',)
我不知道如何告诉Django,我的自定义密码验证器应该在Django AUTH_PASSWORD_VALIDATORS旁边使用。
Angular 7电话号码验证器模式
如何解决Angular 7电话号码验证器模式?
我想用角度形式验证电话号码 需要允许:-电话号码的方括号()和空格–例如(+64)123 4567或0800 660 660 我想找到最好的正则表达式来验证这一点。
docker exec -it ${CONTAINERNAME} echo "Kick it"
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Angular2如何将参数传递给自定义表单控件验证器?
import { Directive } from '@angular/core'; import { AbstractControl,NG_VALIDATORS } from '@angular/forms'; function checkBoxrequiredValidator(c: AbstractControl) { return c.value ? null : { required: true }; } @Directive({ selector: '[checkBox-required-validator]',providers: [ { provide: NG_VALIDATORS,multi: true,useValue: checkBoxrequiredValidator } ] }) export class CheckBoxrequiredValidator { }
我想传递一个消息参数给我,我可以返回.我试过这个,但它不起作用:
function checkBoxrequiredValidator(c: AbstractControl,msg) { return c.value ? null : { message: msg }; } @Directive({ selector: '[checkBox-required-validator]',useValue: checkBoxrequiredValidator } ] }) export class CheckBoxrequiredValidator { @Input('checkBox-required-validator') msg: = 'default message'; }
任何帮助,将不胜感激
import { forwardRef } from '@angular/core'; import { Validator } from '@angular/forms'; @Directive({ selector: '[checkBox-required-validator]',providers: [ { provide: NG_VALIDATORS,useExisting: forwardRef(() => CheckBoxrequiredValidator ) } ] }) export class CheckBoxrequiredValidator implements Validator { @Input('checkBox-required-validator') msg = 'default message'; validate(c: AbstractControl) { return c.value ? null : { required: this.msg }; } }
angularjs 表单密码验证自定义指令实现代码
HTML代码
js
.directive("equalTo",function () {
return {
require: "ngModel",link: function (scope,ele,attrs,ctrl) {
console.log(s<a href="https://www.jb51.cc/tag/cop/" target="_blank">cop</a>e);//打印当前作用域
console.log(attrs);//打印当前<a href="https://www.jb51.cc/tag/biaoqian/" target="_blank">标签</a><a href="https://www.jb51.cc/tag/shuxing/" target="_blank">属性</a>列表
console.log(ctrl);//打印当前ctrl
var target = attrs["equalTo"];//<a href="https://www.jb51.cc/tag/huoqu/" target="_blank">获取</a><a href="https://www.jb51.cc/tag/zidingyi/" target="_blank">自定义</a>指令<a href="https://www.jb51.cc/tag/shuxing/" target="_blank">属性</a>键值
if (target) {//判断键是否存在
s<a href="https://www.jb51.cc/tag/cop/" target="_blank">cop</a>e.$watch(target,function () {//存在启动监听其值
ctrl.$validate()//每次改变手动<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank">调用</a>验证
})
// <a href="https://www.jb51.cc/tag/huoqu/" target="_blank">获取</a>当前模型控制器的父控制器FormController
var targetCtrl = ctrl.$$parentForm[target];//<a href="https://www.jb51.cc/tag/huoqu/" target="_blank">获取</a>指定模型控制器
console.log(targetCtrl)
ctrl.$validators.equalTo = function (modelValue,viewVale) {//<a href="https://www.jb51.cc/tag/zidingyi/" target="_blank">自定义</a>验证器<a href="https://www.jb51.cc/tag/neirong/" target="_blank">内容</a>
var targetValue = targetCtrl.$viewValue;//<a href="https://www.jb51.cc/tag/huoqu/" target="_blank">获取</a>password的输入值
return targetValue == viewVale;//是否等于passwordConfirm的值
}
ctrl.$formatters.push(function (value) {
console.log("<a href="https://www.jb51.cc/tag/zhengzaijinxing/" target="_blank">正在进行</a>数据格式化的值:",value)
return value;
})
ctrl.$parsers.push(function (value) {
console.log("<a href="https://www.jb51.cc/tag/zhengzaijinxing/" target="_blank">正在进行</a>数据转换的值:",value)
return value;
})
}
}
}
})
演示地址:
Angular如何在跨字段验证器中直接调用其它独立的验证器
本文 DEMO 地址:源码或最终效果
在angular中关于表单动态验证的一种新思路一文中我们给出了Angular项目进行字段校验的三种方法。本文我们将重点围绕第一种方法展开讨论。
假设有如下应用:
该应用的功能是对输入的数值的奇偶数进行判断,如果满足条件,则启用Submit
按钮,否则不启用。
跨字段验证
由于对输入数值的校验是根据输入类型来区分的,所以这里我们需要一个跨输入类型
及输入数值
的验证器:
ngOnInit(): void {
this.formGroup.setValidators((formGroup) => {
formGroup = formGroup as FormGroup;
const type = formGroup.get(''type'').value as number;
if (type === 0) {
// 验证是否是偶数 1️⃣
} else {
// 验证是否为奇数 1️⃣
}
});
}
虽然我们可以在1️⃣处直接写入验证器的逻辑,但从分工的角度上来讲,这往往是最坏的一种的方案。
为此,我们同时准备了验证器:
/**
* 数字校验器
*/
export class NumberValidator {
/**
* 偶数校验器
*/
static isEven(control: AbstractControl): ValidationErrors | null {
const value = +control.value as number;
if (Number.isInteger(value) && value % 2 === 0) {
return null;
} else {
return { isEven: ''输入的数字不是偶数'' };
}
}
/**
* 奇数校验器
*/
static isOdd(control: AbstractControl): ValidationErrors | null {
const value = +control.value as number;
if (Number.isInteger(value) && value % 2 === 1) {
return null;
} else {
return { isOdd: ''输入的数字不是奇数'' };
}
}
}
使用独立的验证器
有了独立的验证器后,我们可以使用类似如下的代码,直接在跨字段校验器中进行调用:
ngOnInit(): void {
this.formGroup.setValidators((formGroup) => {
formGroup = formGroup as FormGroup;
const type = formGroup.get(''type'').value as number;
if (type === 0) {
return NumberValidator.isEven(formGroup.get(''value''));
} else {
return NumberValidator.isOdd(formGroup.get(''value''));
}
});
}
是的,在调用的时候将需要验证的FormControl
传入即可。
如果我们的跨字段验证器需要同时对多个字段进行校验,则还可以这样:
const result = {
...Validators.required(formGroup.get(this.formKeys.image)),
...Validators.required(formGroup.get(this.formKeys.imageLeftTopPoint)),
...Validators.required(formGroup.get(this.formKeys.imageRightBottomPoint)),
...MapPointValidator.isPoint(formGroup.get(this.formKeys.imageLeftTopPoint)),
...MapPointValidator.isPoint(formGroup.get(this.formKeys.imageRightBottomPoint))
}
return Object.keys(result).length === 0 ? null : result;
处对返回的错误信息进行判断,如果长度为0,则说明返回了{}
,直接返回null
,否则返回多个验证器拼接后的错误信息。
如果你想看到具体的代码及效果,请点击:示例代码或最终效果
关于如何在django auth密码验证器旁边使用自定义密码验证器?和验证密码的代码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Angular 7电话号码验证器模式、Angular2如何将参数传递给自定义表单控件验证器?、angularjs 表单密码验证自定义指令实现代码、Angular如何在跨字段验证器中直接调用其它独立的验证器等相关知识的信息别忘了在本站进行查找喔。
本文标签: