David__Liang 2021-12-22 11:07 采纳率: 82.4%
浏览 89
已结题

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

  • 写回答

5条回答 默认 最新

  • 关注

    引用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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 创建了问题 12月22日

悬赏问题

  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏
  • ¥15 STM32串口接收问题
  • ¥15 腾讯IOA系统怎么在文件夹里修改办公网络的连接
  • ¥15 filenotfounderror:文件是存在的,权限也给了,但还一直报错
  • ¥15 MATLAB和mosek的求解问题
  • ¥20 修改中兴光猫sn的时候提示失败
  • ¥15 java大作业爬取网页
  • ¥15 怎么获取欧易的btc永续合约和交割合约的5m级的历史数据用来回测套利策略?
  • ¥15 有没有办法利用libusb读取usb设备数据