Python Django

这是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中添加的用户,用户密码就不是加密的还出现了以下报错,

img

引用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中添加用户的同时自己添加用户

img

img

img

有帮助请点一下右上角的采纳,谢谢

split() 必须是字符串才能引用 ,谢谢!检查你的status
如有帮助,请点击我评论上方【采纳该答案】按钮支持一下。

看错误,感觉问题在你贴的提示内容前面(就是那个错误 10053前的内容)。
另外, 我觉得django 的model 不好用。 我都是自己写 数据访问接口, 如果用mysql , 直接用 pymysql 库 。

可能是防火墙把你的应用中止了吗?你可以把错误界面都贴上来

就是 django 能继续工作, 但控制台持续有错误提升?
参考下这个