项目设计与配置
实现功能
- 信息反馈页面:信息提交功能以表单形式实现,信息展示以数据列表形式呈现;每条信息包含序号、用户名、信息内容和提交日期
-
Admin后台系统:管理信息反馈页面的数据内容,方便网站管理员维护和管理网站的数据内容
-
自定义异常机制:实现404和500的页面设置,使404和500页面与信息反馈页面的设计风格保持一致
- 单元测试:测试信息反馈页面的功能,比如测试模型的读写操作、视图函数的业务逻辑
项目架构设计
- 创建项目messageBoard
django-admin startproject messageBoard
- 创建项目应用index(用于实现信息反馈页面)
python manage.py startapp index
- 针对全局template的路由配置:在项目根目录下创建模板文件夹templates,并分别创建模板文件404.html、500.html和base.html(共用模板文件);在setting设置TEMPLATES
# setting.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 添加全局templates路径
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
# 全局模板的使用方式
from django.shortcuts import render
def hello(request):
#render()是模板引擎,第一个参数是request,第二个参数是页面
return render(request, "index.html")
- 针对本应用内template的路由配置:在index应用文件夹中新建templates,其中再新建文件夹index,放置index.html(用于生成信息反馈页面,它继承共用模板文件base.html);在setting设置INSTALLED_APPS
# setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'index',
]
# 本应用的模板使用方式
from django.shortcuts import render
def hello(request):
#render()是模板引擎,第一个参数是request,第二个参数是页面
return render(request, "index/index.html")
-
在index应用文件夹中新建static(该文件夹的静态资源只能在Django的调试模式下使用),其中放置静态资源
-
在项目目录下新建static(该文件夹存放静态资源),需要对static进行配置(如进阶所述)
-
在index应用文件夹中创建urls.py文件
-
在index应用文件夹中创建form.py文件(用于定义表单类MessageModelForm,在模板文件index.html中使用表单类实现信息提交功能)
中间件
中间件介绍
-
Django中间件作用
- 修改请求,即传送到view中的HttpRequest对象
- 修改响应,即view返回的HttpResponse对象
-
中间件组件配置在settings.py文件的MIDDLEWARE选项列表中
-
配置中的每个字符串选项都是一个类,也就是一个中间件
中间件配置
# 添加中间件LocaleMiddleware,因为项目需要使用内置Admin后台系统实现信息反馈页面的数据管理
'django.middleware.locale.LocaleMiddleware',
数据库配置
创建数据库
- 使用Navicat创建数据库messagedb
连接数据库
# setting.py
# 将项目与数据库进行连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'messagedb',
'USER' : 'root',
'PASSWORD' : 'root',
'HOST' : '127.0.0.1',
'PORT' : '3306',
}
}
数据库架构设计
-
用户提交的信息以数据列表形式呈现;每条信息包含序号、用户名、信息内容和提交日期
-
利用Django ORM,在models.py中定义表并映射到MySQL
# index的models.py
from django.db import models
class Message(models.Model): # 继承基类
id = models.AutoField('序号', primary_key = True) # 自增长类型,数据表的字段类型为整数,长度为11位
name = models.CharField('名称', max_length = 50) # 字符类型
content = models.