auth模块补充
1.用户注册
from django.contrib.auth.models import AbstractUser,User
# 操作auth_user写入数据不能使用create方法 密码不会自动加密
# User.objects.create(username=username,password=password,email=email)
# 创建普通用户
User.objects.create_user(username=username,password=password,email=email)
# 创建超级用户
User.objects.create_superuser(username=username, password=password, email=email)
2.用户注销
auth.logout(request)
auth模块用户表扩展字段
在auth_user表的基础之上还想增加额外的字段 并且还可以使用auth模块所有的功能
# 配合文件配置
# 告诉django使用我们自己定义的表来取代auth_user表
AUTH_USER_MODEL = 'app01.Userinfo' # 应用名.表名
# 一对一表关联(了解)
# 面向对象继承(掌握)
from django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser):
# 扩展AbstractUser表中没有的字段
phone = models.BigIntegerField()
info = models.CharField(max_length=255)
importlib模块
用字符串的形式导入模块
from b import c
print(c) # <module 'b.c' from 'D:\\day54_1\\b\\c.py'>
import importlib
res = 'b.c'
ret = importlib.import_module(res) # from b import c
print(ret) # <module 'b.c' from 'D:\\day54_1\\b\\c.py'>
settings源码
django有两个配置文件
一个是暴露给用户自定义的配置
一个是项目默认的配置
用户没有配置的情况下使用的是项目默认的配置
用户配置了的情况下则使用用户配置的
如何实现
先读取项目默认配置
再读取自定义配置
# 字典的键存在则替换 不存在则创建
from django.conf import settings
class LazySettings(...):
def _setup(self, name=None):
settings_module = os.environ.get(ENVIRONMENT_VARIABLE) # 'day53.settings'
self._wrapped = Settings(settings_module) # Settings('day53.settings')
class Settings(object):
def __init__(self, settings_module): # 'day53.settings'
for setting in dir(global_settings): # 获取全局配置文件可以点的变量名
if setting.isupper(): # 校验配置必须全大写
setattr(self, setting, getattr(global_settings, setting))
# setting指代的是所有全大写的变量名
# getattr(global_settings, setting)获取全大写变量名对应的值
# 给对象设置属性 可以简单的理解为 给字典添加键值对
self.SETTINGS_MODULE = settings_module # 'day53.settings'
mod = importlib.import_module(self.SETTINGS_MODULE)
settings = LazySettings(...)
for setting in dir(mod): # 获取
if setting.isupper():
setting_value = getattr(mod, setting)
setattr(self, setting, setting_value)
项目开发流程
1.需求分析
架构师 产品经理 开发经理临时组队去客户公司交流
提前了解项目 规划项目 引导客户提出合理需求
2.项目设计
架构师 框架的选择 数据库(主库 从库)的选择 语言的选择
项目报价(开发难度 开发人员配备)
项目经理二次加价 各领导层确认之后提交
3.分组开发
架构师将项目划分成多个功能模块交由不同的开发组完成
开发经理找小组成员开会分配开发任务
4.项目测试
自己写测试脚本本地测试
测试部门全面测试(压力测试...)
# 20K 基本工资8K 岗位津贴6K 岗位绩效3K 其他补贴3K
5.交付上线
项目运维
仿博客园项目
表分析
用户表
个人站点表
文章表
文章分类表
文章标签表
文章点赞点踩表
文章评论表
表字段
用户表
在auth_user基础之上扩展
手机号
头像
注册时间
个人站点表
站点名称
站点标题
站点样式
文章表
文章标题
文章简介
文章内容
上传时间
文章标签表
标签名称
文章分类表
分类名称
点赞点踩表
用户id
文章id
点赞或点踩
评论表
用户id
文章id
评论内容
评论时间