Django管理系统后端开发1
后端开发准备工作
配置数据库
更改模板文件路径
配置静态文件路径
配置时区及其相关
配置static过滤器
模板标记
关于用户系统:
自定义User模型:
继承自django内置user系统
使用shortuuid作为主键
model.py文件
待解决
后端开发准备工作
-
配置数据库 -
配置模板文件的路径 -
配置时区 -
配置模板的static过滤器
配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ziwu2',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': 'root',
}
}
更改模板文件路径
新建项目后django模板默认配置是在主文件夹下,因为我的模板放在front下,所以需要进行修改
配置静态文件路径
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'front','dist')
]
配置时区及其相关
配置static过滤器
在模板中配置该过滤器后就不需要以后再在HTML中load static了
'builtins':[
'django.templatetags.static'
],
具体位置:在templates->options内配置
模板标记
-
在视图中render HTML页面时可能出现不会提示的现象,原因是更改了django自带的templates模板文件夹,这时我们需要将现在的template文件夹标记为模板文件夹 template folder标记文件夹为模板文件夹
02User模型创建
关于用户系统:
-
使用django内置的user系统 -
需要重新定制 -
前台使用的是同一个USer系统
自定义User模型:
-
创建一个zwauth的app,用来管理用户系统。 -
不能创建auth的app,django已经使用了 -
全部重写,继承自AbstractBaseUser。 -
定义UserManager。 -
设置AUTH_USER_MODEL。 -
映射到数据库中
继承自django内置user系统
from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin
使用shortuuid作为主键
安装:
pip install django-shortuuidfield
导入:
from shortuuidfield import ShortUUIDField
model.py文件
from django.db import models
from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager
from shortuuidfield import ShortUUIDField
from django.db import models
class UserManager(BaseUserManager):
# 受保护的方法,不能在类外面被访问
def _create_user(self,telephone,username,password,**kwargs):
if not telephone:
raise ValueError('请传入手机号码!')
if not username:
raise ValueError('请传入用户名!')
if not password:
raise ValueError('请传入密码!')
user = self.model(telephone=telephone,username=username,**kwargs)
user.set_password(password)
user.save()
return user
def create_user(self,telephone,username,password,**kwargs):
# 创建普通用户的
kwargs['is_superuser'] = False
return self._create_user(telephone,username,password,**kwargs)
def create_superuser(self,telephone,username,password,**kwargs):
kwargs['is_superuser'] = True
kwargs['is_staff'] = True
return self._create_user(telephone,username,password,**kwargs)
class User(AbstractBaseUser,PermissionsMixin):
# 不使用默认自增长的主键
uid = ShortUUIDField(primary_key=True,verbose_name='主键')
telephone = models.CharField(max_length=11,unique=True,verbose_name='手机号码')
# password = models.CharField(max_length=200,verbose_name='密码')
email = models.EmailField(null=True,blank=True,verbose_name='邮箱')
username = models.CharField(max_length=100,verbose_name='用户名')
is_active = models.BooleanField(default=True,verbose_name='账号状态')
is_staff = models.BooleanField(default=False,verbose_name='员工')
data_joined = models.DateTimeField(auto_now_add=True,verbose_name='加入时间')
# 用来作为验证的字段,如果没有写,那么默认使用的时username
USERNAME_FIELD = 'telephone'
# 在命令创建管理员时会要求输入:username, telephone, password
REQUIRED_FIELDS = ['username']
# 给指定用户发送邮件的,会根据这个字段发送
EMAIL_FIELD = 'email'
objects = UserManager()
def get_full_name(self):
return self.username
def get_short_name(self):
return self.username
待解决
-
未定义AUTH_USER_MODEL = ''的错误 映射是发生错误解决:待解决
-
在django3.1版本中我已经定义了这个,但还是报错了
-
在django2.2版本中未报错 -
待解决
文案:子午
责编:子午