这是model模块
from django.db import models
from django.contrib.auth.models import AbstractUser
class Teacher(AbstractUser):
phone = models.CharField(max_length=11,verbose_name='手机号')
class Meta:
db_table='teacher'
verbose_name='教师'
verbose_name_plural=verbose_name
def __str__(self):
return self.username;
这是view模块
#注册模块
def register(request):
if request.method =="POST":
forms_Reg = forms.registerForm(request.POST)
#帮我做校验
if forms_Reg.is_valid():
#校验通过,去数据库创建一个新用户
forms_Reg.cleaned_data.pop("re_password")
models.Teacher.objects.create_user(**forms_Reg.cleaned_data)
#创建成功之后就跳转到登录页面
return redirect("/login/")
else:
return render(request,"register.html",{"form_Reg":forms_Reg})
form_Reg = forms.registerForm()
return render(request,"register.html",{"form_Reg":form_Reg})
这是admin模块
from django.contrib import admin
from .models import Teacher
# Register your models here.
admin.site.site_header='线性代数试卷生成系统后台'
admin.site.site_title="教师管理"
@admin.register(Teacher)
class TeacherAdmin(admin.ModelAdmin):
list_display = ('username','password') #要显示的字段
我基于django的用户模块创建一个用户模块,然后资金弄html然后通过view中的注册函数注册的用户密码是加密,
但是不知道为什么在Admin中添加的用户,用户密码就不是加密的还出现了以下报错,
引用django用户表示user而不是AbstractUser
参考delmo
from django.contrib.auth.models import User
class Userinfo(User):
supernumber = models.IntegerField(verbose_name = '权限',choices = ((0,'无权限'),(1,'销售权限'),(2,"管理权限")),
default = 0,
help_text = "非必填:用户登录到前台后的权限")
isenable = models.BooleanField(verbose_name = '是否启用',default = False,help_text = "非必选:用户能否登录前台界面")
def __init__(self,*args,**kwargs):
super(Userinfo,self).__init__(*args,**kwargs)
self._meta.get_field('is_staff').verbose_name = '能否登录后台'
self._meta.get_field('groups').verbose_name = '用户组'
self._meta.get_field('user_permissions').verbose_name = '用户数据库权限'
self._meta.get_field("last_name").help_text = "非必填:姓氏"
self._meta.get_field("first_name").help_text = "非必填:名字"
self._meta.get_field("email").help_text = "非必填:邮箱"
self._meta.get_field("date_joined").help_text = "非必填:加入时间"
class Meta:
db_table = 'userinfo'
verbose_name = '用户信息表'
verbose_name_plural = verbose_name
def __str__(self):
return f"用户名:{self.username},权限:{self.supernumber}"
创建用户
from django.contrib.auth.hashers import make_password, check_password
#从django请求中获取的参数,我这里使用装饰器将所有参数放在可kwargs中
name = kwargs.get('name')
pwd = kwargs.get('pwd')
makpwd = make_password(password=pwd)
#添加用户
Userinfo.objects.create(username=name, password=makpwd)
这样即可在admin中添加用户的同时自己添加用户
有帮助请点一下右上角的采纳,谢谢
split() 必须是字符串才能引用 ,谢谢!检查你的status
如有帮助,请点击我评论上方【采纳该答案】按钮支持一下。
看错误,感觉问题在你贴的提示内容前面(就是那个错误 10053前的内容)。
另外, 我觉得django 的model 不好用。 我都是自己写 数据访问接口, 如果用mysql , 直接用 pymysql 库 。
可能是防火墙把你的应用中止了吗?你可以把错误界面都贴上来
就是 django 能继续工作, 但控制台持续有错误提升?
参考下这个