视频加载失败

BBS项目搭建

2097 字
10 分钟
BBS项目搭建

【一】创建Django项目#

  • 本次项目命名为BulletinBoardSystem
  • File ---> New Project --->Django--->定义配置项 ---> CREATE

【二】创建APP#

【1】创建APP#

  • 本次项目拆分成用户,站点和文章三部分
# 创建用户APP
python manage.py startapp user
# 创建站点APP
python manage.py startapp blog
# 创建文章APP
python manage.py startapp article
# 创建管理后台APP
python manage.py startapp backend

【2】路由分发#

  • 分别在三个app下新建urls.py并增加下述内容
from django.urls import path
urlpatterns = []
  • 在跟路由下进行路由分发
    • BulletinBoardSystem/urls.py
from django.contrib import admin
from django.urls import path
from django.urls.conf import include
# 根路由
urlpatterns = [
path('admin/', admin.site.urls),
]
# 路由分发至User App下
user_urlpatterns = [
path("user/", include("user.urls")),
]
# 路由分发至Blog App下
blog_urlpatterns = [
path("blog/", include("blog.urls")),
]
# 路由分发至Article App下
article_urlpatterns = [
path("article/", include("article.urls")),
]
# 路由分发至Backend App下
backend_urlpatterns = [
path("backend/", include("backend.urls")),
]
# 路由扩展
urlpatterns += user_urlpatterns
urlpatterns += blog_urlpatterns
urlpatterns += article_urlpatterns
urlpatterns += backend_urlpatterns

【三】配置文件配置#

【0】配置Django版本#

  • 如果是安装虚拟环境,则默认安装最新版本Django
  • 但是我们的项目使用的是Django3.2.12版本
Terminal window
# 安装指定版本的Django
# 如果已经安装的是最新版本的Django,则默认会卸载最新版本的Django
# 安装指定版本的Django
pip install django==3.2.12

【1】注册APP#

# 注册APP
INSTALLED_APPS = [
# Django的内置后台管理界面
'django.contrib.admin',
# Django的认证系统,提供了用户账号、组群、权限等管理功能。
'django.contrib.auth',
# Django的内容类型框架,为Django应用中的模型提供了一种通用的、与具体模型无关的表示方式。
'django.contrib.contenttypes',
# Django的会话管理框架,为Django应用提供用户会话(Session)支持。
'django.contrib.sessions',
# Django的消息框架,用于在用户会话期间跨请求传递临时信息(如成功提示、错误警告、信息通知等)。
'django.contrib.messages',
# Django的静态文件管理框架,帮助收集、处理和发布项目的静态文件(如CSS、JavaScript、图片等)。
'django.contrib.staticfiles',
# 文章 article 模块
"article.apps.ArticleConfig",
# 用户 user 模块
"user.apps.UserConfig",
# 后台 backend 模块
"backend.apps.BackendConfig",
# 博客 blog 模块
"blog.apps.BlogConfig"
]
1.django.contrib.admin
这是Django的内置后台管理界面,简称Admin Site。
它提供了一个开箱即用、基于Web的界面,允许管理员对项目中的模型(models)进行便捷的增删改查操作。
通过注册模型到Admin Site,开发者可以快速生成针对特定数据模型的管理界面,无需从零开始编写复杂的管理页面代码。
Admin Site还支持自定义列表展示字段、搜索过滤条件、分页、批量操作等功能,极大提高了内容管理效率。
# 2.django.contrib.auth
Django的认证系统,提供了用户账号、组群、权限等管理功能。
主要内容包括:
- 用户模型(User)和相关数据模型:如用户密码哈希存储、用户权限、用户组等。
- 登录/登出功能:包括登录视图、登出视图、密码重置等。
- 认证中间件(Middleware):处理会话认证、匿名用户、权限检查等。
- 视图装饰器:如`@login_required`,用于保护需要用户登录才能访问的视图。
- 权限管理:基于用户、组或模型级别的权限控制,以及自定义权限实现。
# 3.django.contrib.contenttypes
内容类型框架,为Django应用中的模型提供了一种通用的、与具体模型无关的表示方式。
主要内容包括:
- `ContentType`模型:记录所有已安装应用中模型的信息(如模型名、应用名、模型类等),使得其他组件(如admin、sessions、messages等)可以以统一的方式处理不同类型的模型对象。
- 允许与其他组件(如信号、权限系统等)配合,实现与模型无关的功能,如通用的关联对象管理、动态权限分配等。
# 4.django.contrib.sessions
会话管理框架,为Django应用提供用户会话(Session)支持。
主要内容包括:
- 会话存储:支持多种后端(如数据库、缓存、文件系统等)来存储用户会话数据,确保跨请求保持用户状态。
- 会话中间件:自动处理请求中的会话cookie,读取、更新或删除会话数据。
- 会话API:提供创建、修改、删除会话,以及操作会话中键值对的方法,方便在视图和模板中使用。
# 5.django.contrib.messages
消息框架,用于在用户会话期间跨请求传递临时信息(如成功提示、错误警告、信息通知等)。
主要内容包括:
- 消息存储:类似会话,支持多种后端存储消息数据。
- 消息中间件:处理请求中的消息,自动保存待显示的消息,并在下一个请求中渲染显示。
- 消息API:提供添加、清除消息的方法,以及在视图和模板中显示消息的标签和过滤器。
# 6.django.contrib.staticfiles
静态文件管理框架,帮助收集、处理和发布项目的静态文件(如CSS、JavaScript、图片等)。
主要内容包括:
- 静态文件发现:在多个源目录(如各应用的`static`目录和项目级`static`目录)中查找静态文件。
- 集成开发服务器:在开发模式下,自动为静态文件提供服务。
- 静态文件收集命令:在部署时,使用`collectstatic`命令将分散的静态文件复制到指定的静态文件目录,便于Web服务器统一托管和高效服务。
- URL配置:提供`static()`函数用于在URLconf中设置静态文件的URL前缀。

【2】配置数据库#

(1)数据库选择#

  • 本次项目使用的MySQL数据库
  • 因此需要创建新的数据库
Terminal window
# 进入MySQL数据库
mysql -uroot -p
# 执行创建数据库命令
create database bbs_sys;

(2)配置Django#

DATABASES = {
'default': {
# 数据库引擎选择使用MySQL
'ENGINE': 'django.db.backends.mysql',
# 指定数据库名字,需提前创建
'NAME': 'bbs_sys',
# 指定数据库用户名
'USER': 'root',
# 指定数据库用户密码
'PASSWORD': '1314521',
# 指定数据库连接IP
'HOST': '127.0.0.1',
# 指定数据库端口
'PORT': 3306,
# 指定数据库默认编码集(可选)
'CHARSET': 'utf8mb4',
}
}

(3)Django启动MySQL解决方案#

# 解决方案一:安装mysqlclient
pip install mysqlclient
# 解决方案二:猴子补丁
# 步骤一:安装 pymysql 模块
pip install pymysql
# 步骤二:在任意位置的 __init__.py 文件中增加下述代码
import pymysql
pymysql.install_as_MySQLdb()

【四】修改时区#

  • 默认时区为国际时区,切换为亚洲上海
  • 默认Django显示的语言为英文,切换为中文
# 指定应用的默认语言。
# 其值设为 'zh-hans',表示中文简体。
# 这会影响应用程序中所有与文本相关的输出内容,如界面文字、错误消息、模板渲染等。
# 用户在访问应用时,除非另有个性化设置,否则将看到以中文简体呈现的各种信息。
LANGUAGE_CODE = 'zh-hans'
# 设定应用所使用的本地时间。
# 这里设为 'Asia/Shanghai',即中国上海所在的时区。
# 这意味着应用在处理日期和时间相关操作时,会以东八区时间(北京时间)作为基准。
TIME_ZONE = 'Asia/Shanghai'
# USE_I18N 是一个布尔值参数
# 当设为 True 时,启用应用的国际化支持(Internationalization,简称 i18n)。
USE_I18N = True
# USE_TZ 参数控制是否启用应用的时间区域支持(Time Zone support)。
# 当设为 False 时,表明应用不考虑时间区域差异,所有时间操作均基于系统本地时间(通常是服务器操作系统设置的时间)进行。
USE_TZ = False

【五】配置静态文件#

  • 因为需要借助Django的静态文件渲染语法
  • 所以需要配置Django的静态文件配置
STATIC_URL = 'static/'
# 新增 static 配置
STATICFILES_DIRS = [
# 默认使用根目录下的静态文件进行渲染
# 不要忘记手动导入 os 模块 import os
os.path.join(BASE_DIR, 'static')
]

【六】配置媒体静态文件#

  • 称为媒体文件夹,是变动的,由用户定义的文件
  • 如 用户头像, 用户上传的图片或视频等;
  • 可为富文本编辑器mdeditor提供支持
# 配置 media 资源文件接口
MEDIA_URL = '/media/'
# 添加媒体文件夹 media 文件夹位置
# 不要忘记手动导入 os 模块 import os
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Profile Image of the Author
Dream
Hello, I'm Dream.
公告
欢迎来到我的博客!爱学习爱进步。
分类
标签
最新动态
站点统计
文章
169
分类
3
标签
26
总字数
334,507
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录