BBS
1.-首页(显示文章)
-文章详情
-点赞,点踩
-文章评论
-字评论
-评论的展示
-登录功能(图片验证码)
-注册功能(基于form验证,ajax)
-个人站点(不同人不同样式,文章过滤)
-后台管理:
-文章展示
-新增文章
-富文本编辑器
2.数据库设计:
User:
1 | -nid |
Blog:
1 | -nid |
Category:
1 | -nid |
Tag:(文章关键字)
1 | -nid |
Article
1 | -nid |
Commit:
1 | -nid |
BBS项目表关系图
BBS代码流程
一. 博客项目表字段编写,数据库迁移
1.创建BBS
2.连接mysql
1 | DATABASES = { |
3.设置启动项目启动pymysql
1 | 注意BBS__init__.py和app的__init__.py不一样 |
4.配置静态文件路径setting.py,
后面一定要加逗号(创建start文件)
1 | STATICFILES_DIRS = ( |
五.models
5.导入auth主键
1 | from django.contrib.auth.models import AbstractUser |
6.UserInfo这个表,继承AbstractUser,
因为要用auth组件(20,7,8)
1 | class UserInfo(AbstractUser): |
7.upload是上传的,default是默认的
1 | avatar = models.FileField(upload_to='avatar/', default='/static/img/default.png') |
9.创建站点表
1 | class Blog(models.Model): |
10.创建分类表
1 | class Category(models.Model): |
11.创建标签表
1 | class Tag(models.Model): |
12.创建文章表(13)
1 | class Article(models.Model): |
14.和13联系手动创建第三张表
1 | class ArticleTOTag(models.Model): |
15.创建评论表(16.自关联)
1 | class Commit(models.Model): |
17.创建点赞表
1 | class UpAndDown(models.Model): |
21.数据库迁移在setting.py
1 | AUTH_USER_MODEL = 'blog.UserInfo' |
22.执行pycharm的Tools
2.生成图片验证码
23.创建登陆页面
1 | 在urls.py |
23.引入bootstrap和jquery
1 | <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css"> |
24.将栅格系统,将内容放入中见
1 | <div class="container-fluid"> |
25.使用bootstrap语法(26.27.28)
1 | <h1>登录</h1> |
添加一张本地图片
1 | def get_valid_code(request): |
29.导入pillow模块PIL简写
1 | from PIL import Image, ImageDraw, ImageFont |
30.# 生成一张图片,
第一个参数是模式:RGB,
第二个参数是图片大小,
第三个参数是图片颜色
1 | # pip3 install Pillow |
32.创建31调用的函数
1 | import random |
32.内存关联图片BytesIO模块
1 | # 第三种方式 |
33.# ForeignKey跟OneToOneField的区别?
1 | #OneToOneField unique=True,还有联合唯一 |
34.# 存时间类型,
auto_now_add每插入一条数据,时间自动写入当前时间,
1 | # auto_now,这条数据修改的时候,会更新成当前时间 |
35.# 中介模型,
1 | 手动创建第三张表, |
36.# article和tag应不应该联合唯一?一般不键,因为多对多
1 | tag = models.ManyToManyField(to='Tag', through='ArticleTOTag', through_fields=('article', 'tag')) |
37.# 自关联(子评论)
1 | # parent_id=models.ForeignKey(to='Commit',to_field='nid') |
38.# 第四种方式,在图片上写文字
1 | # img = Image.new('RGB', (320, 35), color=get_random_color()) |
39.# 不同的字体是不同的ttf文件
1 | random_code = '' |
40.画原画点
1 | # width = 320 |
41.验证码点击事件
1 | login.html文件中加入id="img_code" |
42.保存到随机session(打开2个网站其中一个是失效的)
1 | # 不同的字体是不同的ttf文件 |
43.登陆视图函数
ajax请求,不能再返回render页面,或者redirect,只能返回字符串
1 | from django.contrib.auth.models import AbstractUser |