目录
一、基础知识
1、MVC模型和MVT模型
1.1MVC模型
Model(模型)+ View(视图)+ Controller(控制器)设计模式
(1)Model模型
用于封装对数据库层的访问,对数据库的数据进行增、删、改、查操作。
(2)View视图
用于封装结果,生成html界面方便用户进行交互。
(3)Controller控制器
用于接受请求,处理业务逻辑,与Model和View进行交互,返回结果。
1.2MVT模型
Model(模型)+View(视图)+Template(模版)设计模式
(1)Model模型
负责与数据库进行交互,进行数据库处理。
(2)View视图
接受请求,处理业务,返回响应。
(3)Template模版
负责封装构造要返回的html页面。
1.3两种模型的区别
字母表示的含义不一样,处理流程有所区别:
(1)MVT中的Model与MVC中的M功能相同,负责和数据库交互,进行数据处理。
(2)MVT中的View与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
(3)MVT中的Template与MVC中的V功能相同,负责封装构造要返回的html。
2、常见状态码
状态码 | 含义 |
1xx 信息性状态码 | 表示临时的响应,需要请求者继续执行操作 |
2xx 成功状态码 | 请求已成功被服务器接收、理解并处理 |
3xx 重定向状态码 | 客户端需要采取进一步的操作才能完成请求 |
4xx 客户端错误状态码 | 请求包含错误或无法被服务器理解 |
5xx 服务器错误状态码 | 服务器在处理请求时遇到了错误 |
常见的:
200:服务器已成功处理了请求。
404:服务器找不到请求的网页。
304: 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
500:服务器内部错误。
二、创建django项目及虚拟环境
1、虚拟环境环境的创建
(1)新建一个项目文件夹mysiteproject
(2)输入命令如下:
#安装 virtualenv
pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
#创建虚拟环境
#虚拟环境名字一般都取名为venv
virtualenv venv
(2)运行结果如下:
2、激活虚拟环境
前面有(venv)虚拟环境名就代表激活了虚拟环境,示例如下:
2、在pycharm使用刚才的虚拟环境
找到文件->设置->添加本地解释器
此时的环境是干净的,只有一个pip
激活
3、创建django项目
3.1安装django
(1)在激活的虚拟环境中输入命令:
#服务器在外国,加入了清华源下载会快点-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple
(2)查看一下 pip list
3.2创建项目
(1)命令如下
django-admin startproject 项目名称
(2)运行结果如下
3.3分析创建好的项目目录
(1)mysit: 项目的容器。
(2)manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
(3)mysit/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
(4)mysit/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。
(5)mysit/settings.py: 该 Django 项目的设置/配置。
(6)mysit/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
(7)mysit/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
3.4启动服务器
(1)命令如下
python manage.py runserver
(2)运行结果如下
3.5创建子应用
(1)命令如下
#创建子应用
python manager.py startapp 应用名称
(2)执行结果如下
3.6分析子应用结构
(1)admin.py文件跟网站的后台管理站点配置相关。
(2)apps.py文件用于配置当前子应用的相关信息。
(3)migrations目录用于存放数据库迁移历史文件。
(4)models.py文件用户保存数据库模型类。
(5)tests.py文件用于开发测试用例,编写单元测试。
(6)views.py文件用于编写Web应用视图。
3.6注册安装子应用
创建出来的子应用目录文件虽然被放到了工程项目目录中,但是django工程并不能立即直接使用该子应用,需要注册安装后才能使用。
在配置文件settings.py中找到INSTALLED_APPS在里面添加子应用名称进行注册:
4、模板
4.1创建templates
(1)创建templates目录,文件夹名称是固定写法
(2)设置模板查找路径
4.2测试templates
(1)在templates里面添加html
(2)配置好相关路由django项目会先找到根路径urls->子应用urls->子应用views
创建项目的urls是根路由
自己创建的子应用urls需要自己添加
视图views.py
(3)启动服务器
5、模型Model
1、安装pymysql和MySQL数据库的客户端驱动
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install mysqlclient==1.4.6 -i https://pypi.tuna.tsinghua.edu.cn/simple/
2、创建数据库
create database mysitedb;
3、配置DATABASES
默认的是sqlite3,我们使用的数据库是mysql
找到django项目的 settings.py 文件中的 DATABASES 修改它:
4、使用 pymysql 模块连接 mysql 数据库
在settings下的__init__.py下输入
不输入会报错django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
5、定义模型类
5.1必备类型
类型 | 说明 |
---|---|
AutoField | 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性 |
BooleanField | 布尔字段,值为True或False |
NullBooleanField | 支持Null、True、False三种值 |
CharField | 字符串,参数max_length表示最大字符个数 |
TextField | 大文本字段,一般超过4000个字符时使用 |
IntegerField | 整数 |
DecimalField | 十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数 |
FloatField | 浮点数 |
DateField | 日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误 |
TimeField | 时间,参数同DateField |
DateTimeField | 日期时间,参数同DateField |
FileField | 上传文件字段 |
ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片 |
5.2定义数据库中的字段
6.迁移
(1)生成迁移文件
python manage.py makemigrations
(2)同步到数据库中
python manage.py migrate
6、网站管理
(1)创建管理员命令
python manage.py createsuperuser
(2)自己设置用户名称、密码和邮箱
(3)进入管理员站,在基础上输入/admin
7、配置文件和静态文件
7.1配置文件
(1)BASE_DIR
配置文件都是在settings.py下
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
(2)配置语言和时区
默认语言和时区为英语和UTC标准时区
更改为中国汉语和时区
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
7.2配置静态文件
(1)创建static目录
(2)在settings.py中修改静态文件的两个参数为
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
之后在static添加的任何静态文件都可以使用网址/static/文件在static中的路径访问。