学习整理1:BBS的思路
为了更好的记忆和整理学习基础,把BBS的项目思路整理一遍。
1、项目结构与配置
1.1项目概况
1、框架,django1.11+mysql5.6,前端配合Jquery和Bootstrap完成这个项目
2、功能要求:
2.1、具备数据存储功能。
2.2、注册、登录和退出,后台要记录session
2.3、具有home,个人页,标签和分类,文章页,后台管理页等。
3、文档结构
/BBS
-app01 #存放应用文件
-models
-views
-BBS #存放配置,urls
-media #存放用户上传的图片
-static #存放CSS,JS等静态文件。
-templates #存放模板。
manage.py #启动文件
1.2项目启动配置
pycharm还是很方便,但是我觉得手动还是要会。
1、先创建project的路径。D:\django\BBS
2、创建django项目。$:django-admin startproject BBS
3、创建app。$:python manage.py startapp app01
4、创建基础文件夹:
4.1、创建\templates文件夹,放置html页面。\templates。
4.2、创建\static,放置静态文件。
4.3、创建\media文件夹,放置用户上传文件。
5、配置settings,在BBS\settings.py中配置:
5.1、BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 配置文件位置,方便后期引用。这里要import os
5.2、 INSTALLED_APPS 列表中,加入app01:: 'app01.apps.App01Config',
5.3、配置template路径 TEMPLATES 列表中加入 'DIRS': [os.path.join(BASE_DIR, 'templates')],
5.4、配置DATABASE:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bbs',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': 3306,
'CHARSET': 'utf8'
}
}
5.5、启动mysql。在/BBS/__init__.py中加入:
import pymysql
pymysql.install_as_MySQLdb()
5.6、修改时区,这个很重要,否则后面会显示UTC,国际时区:
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
5.7、配置静态文件夹:
STATIC_URL = '/static/'
STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static')]
5.8、到这里基本上项目可以启动了,settings中还有一些配置,在程序编写过程中修改,比如media文件夹配置,login配置,AUTH配置,
2、数据分析
所有项目最重要的就是先梳理数据,把梳理梳理清楚了,基本上很多功能都好做了。我们不太可能频繁的修改后台数据库。
2.1、管理数据
由django来创建和管理。
2.2、管理数据
2.2.1、用户数据
用户数据,主要是用于存放用户的基础信息的,包括用户名,密码,性别、头像等。
table_name: userinfo ,这里继承了auth的AbstractUser,abstract是抽象的意思。auth给了我们很多后续的对登录,密码校验的功能。
父类中指定了username,password为必选。还有可选的,email,first_name,last_name,is_active,date_joined,
这样用户信息只要配置,用户的个性信息就可以了,比如:
phone_number,
avatar,
create_time,#这个可以不要,在abstract中已经有date_joined了。
外键:和blog是一对一的外键。一个用户有一个博客。
2.2.2、博客数据
所谓博客,其实就是一个个人页面,把个人发表的文章放到这个页面上,并且提供分类和标签,日期归档等问题。
站点名称,站点标题,站点样式等。
2.2.3、文章分类
对用户创建的文章进行分类,便于查找和管理,统计。
文章分类名称
和博客是外键关键,一个博客可以有多个分类。
2.2.4、标签记录
用户对文章进行分类,一个文章可有多个分类,打标签便于查找和统计。
标签名称
和博客是外键关键,一个博客可以有多个标签。
2.2.5、文章数据
记录文章的相关信息,包括文章标题,文章内容,文章创建时间,点赞,点踩,评论情况等。
文章标题,文章简介,文章内容,创建时间,点赞数,点踩数,评论数。
和博客是外键关系,也就是一个文章只能属于一个博客。
和文章分类外键关系,一个文章,只有一个分类。
和标签是多对对的关系,一个文章可以有多个标签。通过文章关联到标签。
多对多的关系,需要通过一张表来映射:
文章和标签对于关系表。在表中插入两个外键,文章和标签。
2.2.6、点赞点踩记录
记录用户对文章的点赞,点踩情况。
只有是否点踩是本记录的重点,
哪个用户对哪篇文章点赞,都是外键。
2.2.7、评论记录
记录用户对文章的评价情况。
文章内容,评论时间。
哪个用户对哪个文章进行了评论是外键,回复的引用是内部引用。
搞清楚字段之间的关系,才是最重要的。这里需要,特别是多人参与的项目,大家最好有一个对数据的共同认识。
3、ORM的操作。
from django.db import models
models是一个django/db/models的一个文件夹,利用有__int__.py,为models提供了各种功能。
3.2、可以用的字段类型:
在django/db/models/field文件夹里的,__init__.py中记录了所有可以使用的类型。
'AutoField', 'BLANK_CHOICE_DASH', 'BigAutoField', 'BigIntegerField',
'BinaryField', 'BooleanField', 'CharField', 'CommaSeparatedIntegerField',
'DateField', 'DateTimeField', 'DecimalField', 'DurationField',
'EmailField', 'Empty', 'Field', 'FieldDoesNotExist', 'FilePathField',
'FloatField', 'GenericIPAddressField', 'IPAddressField', 'IntegerField',
'NOT_PROVIDED', 'NullBooleanField', 'PositiveIntegerField',
'PositiveSmallIntegerField', 'SlugField', 'SmallIntegerField', 'TextField',
'TimeField', 'URLField', 'UUIDField'
3.3、FileField
FileField,是一个单独的类,file.py中对这个类进行了定义。
3.3、外键
1对1外键
blog = models.OneToOneField(to='Blog',null=True)
多对多外键
tags = models.ManyToManyField(to='Tag',
through='Article2Tag',
through_fields=('article','tag')
)
3.3、对字段进行注释:
verbose_name
3.4、对表名进行注释:
class Meta:
verbose_name_plural = '用户表'

浙公网安备 33010602011771号