学习整理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 = '用户表'

 

 

posted @ 2022-02-26 22:52  吕晋峰  阅读(80)  评论(0)    收藏  举报