首页 > 其他 > 详细

Auth模块 外加bbs项目开发流程及表设计

时间:2021-05-31 21:42:38      阅读:29      评论:0      收藏:0      [点我收藏+]

 


一 Auth模块

  其实我们在创建好一个django项目之后直接执行数据库迁移命令会自动生成很多表列如:

  django_session

  auth_user

  ...  

  django在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考的就是auth_user表,并且还必须是管理员用户才能进入

1.1 命令创建超级管理员

python3 manage.py createsuperuser

1.2依赖于auth_user表完成用户相关的所有功能

  方法总结

技术分享图片
# 1.比对用户名和密码是否正确
user_obj = auth.authenticate(request,username=username,password=password)
# 括号内必须同时传入用户名和密码
print(user_obj)  # 用户对象  jason   数据不符合则返回None
print(user_obj.username)  # jason
print(user_obj.password)  # 密文

# 2.保存用户状态
auth.login(request,user_obj)  # 类似于request.session[key] = user_obj
# 主要执行了该方法 你就可以在任何地方通过request.user获取到当前登陆的用户对象

# 3.判断当前用户是否登陆
request.user.is_authenticated()

# 4.获取当前登陆用户
request.user

# 5.校验用户是否登陆装饰器
from django.contrib.auth.decorators import login_required
# 局部配置
@login_required(login_url=/login/) 
# 全局配置
LOGIN_URL = /login/
    1.如果局部和全局都有 该听谁的?
    局部 > 全局
    2.局部和全局哪个好呢?
    全局的好处在于无需重复写代码 但是跳转的页面却很单一
    局部的好处在于不同的视图函数在用户没有登陆的情况下可以跳转到不同的页面

# 6.比对原密码
request.user.check_password(old_password)

# 7.修改密码
request.user.set_password(new_password)  # 仅仅是在修改对象的属性
request.user.save()  # 这一步才是真正的操作数据库

# 8.注销
auth.logout(request) 

# 9.注册
# 操作auth_user表写入数据
User.objects.create(username=username,password=password)  # 写入数据  不能用create 密码没有加密处理
# 创建普通用户
User.objects.create_user(username=username,password=password)
# 创建超级用户(了解):使用代码创建超级用户 邮箱是必填的 而用命令创建则可以不填
User.objects.create_superuser(username=username,email=123@qq.com,password=password)
技术分享图片

1.3 如何扩展auth_user表

  1.创建models,继承AbstractUse

  如果继承了AbstractUser,那么在执行数据库迁移命令的时候auth_user表就不会再创建出来了,而UserInfo表中会出现auth_user所有的字段外加自己扩展的字段,

  这么做的好处在于你能够直接点击你自己的表更加快速的完成操作及扩展

 

技术分享图片
from django.db import models
from django.contrib.auth.models import User,AbstractUser
# Create your models here.

# 第一种:一对一关系  不推荐
# class UserDetail(models.Model):
#     phone = models.BigIntegerField()
#     user = models.OneToOneField(to=‘User‘)


# 第二种:面向对象的继承
class UserInfo(AbstractUser):
    phone = models.BigIntegerField()

"""  
    前提:
        1.在继承之前没有执行过数据库迁移命令
            auth_user没有被创建,如果当前库已经创建了那么你就重新换一个库
        2.继承的类里面不要覆盖AbstractUser里面的字段名
            表里面有的字段都不要动,只扩展额外字段即可
"""
技术分享图片

  2.需要在配置文件中告诉django你要用UserInfo替代auth_user(******)

 AUTH_USER_MODEL = ‘Myapp.UserInfo
                        应用名.表名

  3.生成与执行迁移,得到如下表:

makemigrations
migrate

  技术分享图片

  4.你如果自己写表替代了auth_user那么,auth模块的功能还是照常使用,参考的表页由原来的auth_user变成了UserInfo

  之后直接调用自定义继承表即   form app01 import models  直接使用Auth方法操作即可

 

bbs项目开发流程                                        回到顶部 

  2.1流程

 1 # 1.需求分析
 2     架构师+产品经理+开发者组长
 3       在跟客户谈需求之前,会大致先了解客户的需求,然后自己先设计一套比较好写方案
 4       在跟客户沟通交流中引导客户往我们之前想好的方案上面靠
 5       形成一个初步的方案
 6  
 7 # 2.项目设计
 8     架构师干的活
 9       编程语言选择
10     框架选择
11     数据库选择
12         主库:MySQL,postgreSQL,...
13       缓存数据库:redis、mongodb、memcache...
14     功能划分
15         将整个项目划分成几个功能模块
16     找组长开会
17         给每个组分发任务
18        项目报价
19         技术这块需要多少人,多少天(一个程序员一天1500~2000计算(大致))
20       产品经理公司层面 再加点钱
21           公司财务签字确认
22         公司老板签字确认
23       产品经理去跟客户沟通
24          
25       后续需要加功能 继续加钱
26 
27 # 3.分组开发
28     组长找组员开会,安排各自功能模块
29   我们其实就是在架构师设计好的框架里面填写代码而已(码畜)
30   
31   我们在写代码的时候 写完需要自己先测试是否有bug
32   如果是一些显而易见的bug,你没有避免而是直接交给了测试部门测出来
33   那你可能就需要被扣绩效了(一定要跟测试小姐姐搞好关系)
34       薪资组成    15K(合理合规合法的避税)
35         底薪    10K
36       绩效    3K
37       岗位津贴 1K
38       生活补贴 1K
39       
40 # 4.测试
41     测试部门测试你的代码
42       压力测试
43     ...
44 # 5.交付上线
45     1.交给对方的运维人员
46   2.直接上线到我们的服务器上 收取维护费用
47   3.其他...

 

2.2表设计                                                                                                   回到顶部  

 

 1 """
 2 一个项目中最最最重要的不是业务逻辑的书写
 3 而是前期的表设计,只要将表设计好了,后续的功能书写才会一帆风顺
 4 
 5 bbs表设计
 6     1.用户表
 7         继承AbstractUser
 8         扩展
 9             phone 电话号码
10             avatar  用户头像
11             create_time  创建时间
12         
13         外键字段
14             一对一个人站点表
15     
16     2.个人站点表
17         site_name 站点名称
18         site_title      站点标题
19         site_theme    站点样式
20     
21     3.文章标签表
22         name        标签名
23         
24         外键字段
25             一对多个人站点
26     
27     4.文章分类表
28         name        分类名
29         
30         外键字段
31             一对多个人站点
32     
33     5.文章表
34         title    文章标题
35         desc    文章简介
36         content    文章内容
37         create_time 发布时间
38         
39         数据库字段设计优化(******)
40             (虽然下述的三个字段可以从其他表里面跨表查询计算得出,但是频繁跨表效率)
41         up_num                    点赞数
42         down_num                点踩数
43         comment_num         评论数
44         
45         外键字段
46             一对多个人站点
47             多对多文章标签
48             一对多文章分类
49             
50         
51     
52     6.点赞点踩表
53         记录哪个用户给哪篇文章点了赞还是点了踩
54         user                        ForeignKey(to="User")                
55         article                    ForeignKey(to="Article")    
56         is_up                        BooleanField()
57         
58         1                1                1
59         1                2                1
60         1                3                0
61         2                1                1
62         
63     
64     7.文章评论表
65         记录哪个用户给哪篇文章写了哪些评论内容
66         user                        ForeignKey(to="User")                
67         article                    ForeignKey(to="Article")
68         content                    CharField()
69         comment_time        DateField()
70         # 自关联
71         parent                    ForeignKey(to="Comment",null=True)        
72         # ORM专门提供的自关联写法    
73         parent                    ForeignKey(to="self",null=True)
74         
75     id    user_id            article_id                parent_id
76     1         1                        1                                        
77     2         2                        1                                        1                    
78         
79 根评论子评论的概念
80     根评论就是直接评论当前发布的内容的
81         
82     子评论是评论别人的评论
83         1.PHP是世界上最牛逼的语言
84             1.1 python才是最牛逼的
85                 1.2 java才是
86         
87     根评论与子评论是一对多的关系
88     
89         
90 """

 

 

 

 

Auth模块 外加bbs项目开发流程及表设计

原文:https://www.cnblogs.com/OUYANGjt/p/14831920.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!