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
        评论内容
        评论时间
posted on 2021-06-03 10:01  lzl_121  阅读(45)  评论(0编辑  收藏  举报