如何解决我可以在 django 身份验证中登录我的用户时使用 6 位密码而不是密码吗?
有没有一种方法可以让用户使用他们的用户名和 6 位密码(就像我们在自动取款机中使用的密码)而不是使用密码登录我的 web 应用程序?我是 Django 的新手,不知道如何或在哪里查看。
谢谢!
解决方法
创建用户的模型表单:
views.py:
def signup(request):
if request.method == "POST":
user_form = User_form(data=request.POST)
if(user_form.is_valid()):
user = user_form.save()
user.set_password(user.password)
user.save()
else:
print(user_form.errors)
else:
#GET_request
user_form = User_form()
return render(request,"signup_page.html",{'user_form': user_form} )
forms.py:
from django import forms
from django.contrib.auth.models import User
class User_form(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ("username","email","password")
signup_page.html:
<!DOCTYPE html>
{% extends "base.html" %}
{% load static %}
{% load bootstrap_tags %}
{% block title %}
Signup
{% endblock %}
{% block body %}
<h3>Please fill in the registration form below,</h3>
<div class="jumbotron">
<!-- user the enctype attribute because we are uploading images -->
<form enctype="multipart/form-data" method="POST">
<div class="container sign-form">
{% csrf_token %}
{{ user_form |as_bootstrap }}
<input type="submit" class = “btn btn-default” name="submit" value="submit">
</div>
</form>
</div>
</div>
{% endblock %}
,
让我们在核心/普通 django 应用程序中创建一个名为 FixedDigitPasswordValidator
的类。
import re
from django.core.exceptions import (
ValidationError,)
class FixedDigitPasswordValidator:
def validate(self,password,user=None):
if re.match("^[0-9]{6,6}$",password):
return
else:
raise ValidationError(
_("This password must have only numeric digits of length 6."),code='password_entirely_numeric',)
def get_help_text(self):
return _('Your password must have only numeric digits of length 6.')
并在 local_settings.py
文件或 settings.py
文件底部添加此行。 Python可以从点状路径加载类。
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator','OPTIONS': {
'min_length': 6,}
},{
'NAME': 'dotted_file_path.file_name.FixedDigitPasswordValidator',},]
现在,每次创建用户时,都会有正好 6 位数的密码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。