Django:Auth+bbs

1.Auth模块

其实我们在创建好一个django项目之后直接执行数据库迁移命令会自动生成很多表
	django_session
	auth_user
  django在启动之后就可以直接访问admin路由  账号密码就是参考的auth_user表
并且还必须是管理员用户才能进入

创建超级用户(管理员)
	python3 manage.py createsuperuser

依赖于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)

2.如何扩展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):
"""
如果继承了AbstractUser
那么在执行数据库迁移命令的时候auth_user表就不会再创建出来了
而UserInfo表中会出现auth_user所有的字段外加自己扩展的字段
这么做的好处在于你能够直接点击你自己的表更加快速的完成操作及扩展

前提:
    1.在继承之前没有执行过数据库迁移命令
        auth_user没有被创建,如果当前库已经创建了那么你就重新换一个库
    2.继承的类里面不要覆盖AbstractUser里面的字段名
        表里面有的字段都不要动,只扩展额外字段即可
    3.需要在配置文件中告诉django你要用UserInfo替代auth_user(******)
        AUTH_USER_MODEL = 'app01.UserInfo'
                            '应用名.表名'
"""
phone = models.BigIntegerField()
"""
你如果自己写表替代了auth_user那么
auth模块的功能还是照常使用  参考的表也由原来的auth_user变成了UserInfo

3.项目开发流程

1).需求分析

架构师+产品经理+开发者组长
在跟客户谈需求之前,会大致先了解客户的需求,然后自己先设计一套比较好写方案
在跟客户沟通交流中引导客户往我们之前想好的方案上面靠
形成一个初步的方案

2).项目设计

架构师干的活
编程语言选择
框架选择
数据库选择
	主库:MySQL,postgreSQL,...
  缓存数据库:redis、mongodb、memcache...
功能划分
	将整个项目划分成几个功能模块
找组长开会
	给每个组分发任务
项目报价
	技术这块需要多少人,多少天
  产品经理公司层面 再加点钱
  	公司财务签字确认
    公司老板签字确认
  产品经理去跟客户沟通
 	
  后续需要加功能 继续加钱

3).分组开发

组长找组员开会,安排各自功能模块
我们其实就是在架构师设计好的框架里面填写代码而已(码畜)
我们在写代码的时候 写完需要自己先测试是否有bug
如果是一些显而易见的bug,你没有避免而是直接交给了测试部门测出来
那你可能就需要被扣绩效了(一定要跟测试小姐姐搞好关系)
 薪资组成	15K
	底薪	10K
  绩效	3K
  岗位津贴 1K
  生活补贴 1K

4).测试

测试部门测试你的代码
压力测试
...

5).交付上线

1.交给对方的运维人员
2.直接上线到我们的服务器上 收取维护费用
3.其他...

4.表设计

一个项目中最重要的不是业务逻辑的书写
而是前期的表设计 只要将表设计好  后续的功能书写才会一帆风顺
1.用户表
	拓展
		phone  电话号码
		avatar  用户头像
		create_time 创建时间

		外键字段
			一对一个人站点表
2.个人站点表
	site_name 站点名称
	site_title 站点标题
	sit_theme 站点样式
3.文章标签表
	name 标签名

	外键字段
		一对多个人站点
4.文章分类表
	name  分类名

	外键字段
		一对多个人站点
5.文章表
	title 文章标题
	desc 文章简介
	content 文章内容
	create_time  发布时间

	数据库字段设计优化(虽然下述的三个字段可以从其他表里面跨表查询计算得出 但是频繁跨表效率低)
	up_num 点赞数
	down_num 点踩数
	comment_num 评论数

	外键字段
		一对多个人站点
		多对多文章标签
		一对多文章分类
6.点赞点踩表
	记录哪个用户给哪篇文章点了赞还是点了踩
	user						ForeignKey(to="User")				
	article					ForeignKey(to="Article")	
	is_up						BooleanField()
	
	1				1				1
	1				2				1
	1				3				0
	2				1				1
7.文章评论表
	记录哪个用户给哪篇文章写了哪些评论内容
	user						ForeignKey(to="User")				
	article					ForeignKey(to="Article")
	content					CharField()
	comment_time		DateField()
	# 自关联
	parent					ForeignKey(to="Comment",null=True)		
	# ORM专门提供的自关联写法	
	parent					ForeignKey(to="self",null=True)
	
id	user_id			article_id				parent_id
1		 1						1										
2		 2						1	

根评论子评论的概念
根评论就是直接评论当前发布的内容的
	
子评论是评论别人的评论
	1.PHP是世界上最牛逼的语言
		1.1 python才是最牛逼的
			1.2 java才是
	
根评论与子评论是一对多的关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值