文章目录
- 1 由来
- 2 目的
- 3 安装
- 4 创建Web项目
- 5 Django项目配置
- 6 数据库配置
- 7 中间件配置
- 8 URL编写规则
- 9 数据可视化
- 9.1 Mysql数据库插件安装库
- 9.2 mysql数据库结构创建
- 9.3 mysql数据库ORM引用
- 9.4 运行华为官网
- 9.5 Error及解决
- Q1:install/Remove of the Service Denied!
- Q2: --initialize specified but the data directory has files in it. Aborting.
- Q3:Can't connect to MySQL server on 'localhost' (10061)
- Q4:django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on '180.167.16
- Q5:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
- Q6:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required
- 10 Admin 后台系统
1 由来
Django是一个开放源代码的web应用框架,采用了MTV的框架模式,即模型(Model)、模板(Template)和视图(Views),三者之间各自负责不同的职责。
• 模型,数据存取层,处理与数据相关的所有事务,例如如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
• 视图,表现层,处理与表现相关的决定,例如如何在页面或其他类型文档中进行显示。
• 模板,业务逻辑层,存取模型及调取恰当模板的相关逻辑,模型与模板的桥梁。
2 目的
简便、快速地开发数据库驱动的网站:强调代码复用,多个组件可以很方便地以插件形式服务于整个框架,Django有许多功能强大的第三方插件,可以很方便地开发出自己的工具包。这使得Django具有很强的可扩展性,还强调快速开发和DRY(Do Not Repeat Yourself)原则。Django基于MVC的设计十分优美:
• 对象关系映射(Object Relational Mapping,ORM):通过定义映射类来构建数据模型,将模型与关系数据库连接起来,使用ORM框架内置的数据库接口可实现复杂的数据操作。
• URL设计:开发者可以设计任意的URL(网站地址),而且还支持使用正则表达式设计。
• 模板系统:提供可扩展的模板语言,模板之间具有可继承性。
• 表单处理:可以生成各种表单模型,而且表单具有有效性检验功能。
• Cache系统:完善的缓存系统,可支持多种缓存方式。
• 用户管理系统:提供用户认证、权限设置和用户组功能,功能扩展性强。
• 国际化:内置国际化系统,方便开发出多种语言的网站。
• admin管理系统:内置admin管理系统,系统扩展性强。
3 安装
3.1 命令行安装
Windows + R -> cmd -> pip install -i https://pypi.douban.com/simple django
3.2 检查是否成功
4 创建Web项目
4.1 新建一个Django项目
-
Pycharm -> New Project
-
点击 create,会自动生成如下文件夹
4.2 创建网站首页和用户中心
- 在 Django 同级目录下创建 index 和 user 文件夹
- 各文件简单介绍
- migrations: 用于数据库的迁移;
- __init.py: 初始化文件一般不需修改;
- admin.py: 当前 APP 的后台管理系统;
- apps.py: 当前 APP 的配置信息,Django 1.9 之后自动生成,一般无需修改;
- models.py: 定义映射类关联数据库,实现数据持久化,MTV 中的模型(Model);
- tests.py: 自动化测试模块;
- views.py: 逻辑处理模块,MTV 中的视图(Views)。
- 进行如下设置
不加端口号80默认为8000
4.3 启动服务器运行网页
在上方标题栏,点击
Run -> Edit Configurations -> Host: localhost, 其余不修改 -> OK
Run -> Run ‘Django’
则默认浏览器会打开:
4.4 Error 及解决
Q1:NameError: name ‘os’ is not defined
A1:点击报错的文件,添加 import os
保存再次运行即可,如下
Q2:ModuleNotFoundError:No module named ‘django’
A2:Pycharm -> File -> Settings -> Project Interpreter -> 点击 + -> django -> install
Q3:WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.
A3:先运行此命令升级 pip:python -m pip install --upgrade pip -i https://pypi.douban.com/simple
5 Django项目配置
项目配置是根据实际开发需求从而对整个Web框架编写相关配置信息。配置信息主要由项目的settings.py实现,主要配置有项目路径、密钥配置、域名访问权限、App列表、配置静态资源、配置模板文件、数据库配置、中间件和缓存配置。
setting.py
# 项目路径
# Build paths inside the project like this: os.path.join(BASE_DIR,...)
BASE_DIR =
os.path.dirname(os.path.dirname(os.path.abspath( file )))
# 密钥配置
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'u7gd2#90dmi$e6zkgxy1!p0s&gvuj)q^v%4i9^nwva2uuvvdm'
# 调试模式
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG =True
# 域名访问权限,允许所有域名访问ALLOWED_HOSTS= [‘*’]
ALLOWED_HOSTS = []
# APP列表
Applicationdefinition
INSTALLED_APPS =[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'index',
'user',
]
5.1 设置(settings)
settings.py: 新创建的 APP 必须添加在 APP 列表中,如下
- admin:内置的后台管理系统
- auth:内置的用户认证系统
- contenttypes:记录项目中所有 model 元数据(Django 的 ORM 框架)
- sessions:Session 会话功能,标识当前访问网站的用户身份,记录相关的用户信息
- messages:消息提示功能
- staticfiles:查找静态资源路径
5.2 静态文件路径配置
除此之外,静态资源配置还有 STATIC_ROOT,作用是方便在服务器上部署,实现服务器和项目之间的映射。其主要收集整个项目的静态资源并存放至一个新的文件夹,然后由该文件夹与服务器构建映射关系。
STATIC_ROOT配置: STATIC_ROOT=os.path.join(BASE_DIR, 'all_static')
用于项目部署,在开发过程作用不大。
5.3 Error及解决
Q1:localhost 拒绝了我们的连接请求
A1:将 URL 修改为:http://localhost:8000/static/index.jpg
(因为之前改了默认端口,为8000,原来是80)
5.4 模板配置(templates)
- templates: 一种特殊的 HTML 文档,嵌入了一些能够让 python 识别的变量和指令,程序解析它们生成完整的 HTML 网页并返回给用户。是 Django 中的 MTV 框架模式的 T 部分,配置模板路径是告诉 Django 在解析模板时找到模板所在位置。创建项目时已有初始模板配置信息。
此处,进行如下配置:
6 数据库配置
settings.py 文件:
7 中间件配置
中间件(Middleware)是处理Django的request和response对象的钩子。当用户在网站中进行单击某个按钮等操作时,这个动作是用户向网站发送请求(request):而网页会根据用户的操作返回相关的网页内容,这个过程称为响应处理(response)。从请求到响应的过程中,当Django接收到用户请求时Django首先经过中间件处理请求信息,执行相关的处理,然后将处理结果返回给用户。
8 URL编写规则
8.1 简单 url
在App里添加urls.py是将属于App的URL都写入到该文件中,而项目根目录的urls.py是将每个App的urls.py统一管理。当程序收到用户请求的时候,首先在根目录的urls.py查找该URL是属于那个App,然后再从App的urls.py找到具体的URL信息。在根目录的urls.py编写URL规则。
8.2 带变量的 url
URL的变量类型有字符类型、整型、slug和uuid,最为常用的是字符类型和整型。
各个类型说明如下。
- 字符类型:匹配任何非空字符串,但不含斜杠。如果没有指定类型,默认使用该类型。
- 整型:匹配0和正整数。
- slug:可理解为注释、后缀或附属等概念,常作为URL的解释性字符。可匹配任何ASCII字符以及连接符和下画线,能使URL更加清晰易懂。比如网页的标题是“16岁的女孩”,其URL地址可以设置为“16-sui-de-nv-hai”
- uuid:匹配一个uurd格式的对象。为了防止冲突,规定必须使用破折号并且所有字母必须小写,例如075194d3-6885-417e-a8a8-6c931e272f00
<year>:变量名为year,数据格式为字符类型,与<str:year>的含义一样。
<int:month>:变量名为month,数据格式为整型。
<slug:day>:变量名为day,数据格式为slug。
8.3 设置参数name
8.4 设置额外参数
以字典的数据类型传参,该参数没有具体命名,字典形式即可,且只能在视图函数中读取和使用。
浏览器输入/dict/2020.htm
(不能写成 .html,只能识别第一次的 html)
8.5 构建网页内容
- 下载文件,首次会有下载确认选项
- 模拟华为官网首页
9 数据可视化
视图除了接收用户请求和返回响应内容之外,还可以与模型(Model)实现数据交互(操作数据库)。视图相当于一个处理中心,负责接收用户请求,然后根据请求信息读取并处理后台数据,最后生成HTML网页返回给用户。视图操作数据库实质是从models.py导入数据库映射对象,models.py的数据库对象是通过Django内置的ORM框架构建数据库映射的,从而生成数据库对象。
9.1 Mysql数据库插件安装库
-
安装 mysqlclient
pip install mysqlclient
-
安装 PyMysql 连接库
pip3 install PyMysql
-
安装 mysql 数据库
-
解压缩mysql-5.7.28-winx64到D;
-
若果不是D盘请修改my.ini中的路径basedir和datadir路径;
-
在mysql的bin文件夹中,cmd命令模式下安装服务;
-
初始化mysql(每次初始化必须清空data文件夹,否则会报如下 Q2 的Error);
-
启动 mysql 实例;
-
修改密码;
初始化之后会产生一个 root 随机密码(下图框中):
首先登录 root 账户,用命令set password=password('root')
使用 sqlyog 或 Navicat 连接数据库,新建,New Connection,输入名称,确定
9.2 mysql数据库结构创建
a. 新建django3
b. 编写测试代码
看到 mysql 的版本号,python3必须使用5.7以上的 mysql,否则无法后续生成django的安全权限等数据表。
c. 导入 django 安全权限等数据表和自定义数据表结构
d. 通过 index_product.xlsx 录入产品或通过 index_product.sql 导入产品
9.3 mysql数据库ORM引用
修改 index.html 和 views.py
9.4 运行华为官网
9.5 Error及解决
Q1:install/Remove of the Service Denied!
A1:使用管理员身份运行 cmd
Q2: --initialize specified but the data directory has files in it. Aborting.
A2:将 mysql-5.7.28-winx64 中的 data 文件夹清空,再次运行即可
Q3:Can’t connect to MySQL server on ‘localhost’ (10061)
A3:可能有如下原因:
- 没有使用管理员模式运行;
- 随机密码输入错误;
- mysql 服务未启动
Q4:django.db.utils.OperationalError: (2002, "Can’t connect to MySQL server on '180.167.16
0.139’ (10060)")
A4:将 settings.py 中HOST修改为 'HOST': '127.0.0.1'
Q5:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named ‘MySQLdb’
A5:需安装 PyMysql(使用python3以上的版本),在项目 init.py 文件中
import pymysql
pymysql.install_as_MySQLdb()
Q6:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required
A6:在 init.py 文件中
import pymysql
pymysql.version_info = (1, 4, 13, 'final', 0) # 指定版本
pymysql.install_as_MySQLdb()
10 Admin 后台系统
Admin后台系统也称为网站后台管理系统,主要用于对网站前台的信息进行管
理,如文字、图片、影音和其他日常使用文件的发布、更新、删除等操作,也
包括功能信息的统计和管理,如用户信息、订单信息和访客信息等。简单来说
, 就是对网站数据库和文件的快速操作和管理系统,以使网页内容能够及时得
到更新和调整。
-
创建管理员:在 Pycharm 中打开 Terminal,
python manage.py createsuperuser
-
登录
localhost/admin/login
10.1 注册 Product
-
index -> admin.py
-
修改 title 和 header