1.http协议
HTTP 协议是接下来学习网站框架最重要的协议HTTP (HyperText Transfor Protocol) 超文本传输协议是互联网目前应用最为广泛的一种协议目前的 WWW 服务器都基于 HTTP 协议,HTTP 协议的目的是为了提供一种发布 Web 及接收 Web 页面数据的方法HTTP 协议常用端口为 80,客户端首先通过 80 端口向 HTTP 服务端发起请求,建立 TCP 连接,之后进行 HTTP 数据传输
B/S架构
HTTP 协议属于建立在 TCP 协议中的应用层上的一种协议,HTTP 协议以客户端请求和服务端应答为标准,浏览器(*browser*)通常被人称为客户端,Web 服务器(*server*)常被称作服务端,所以人们经常称这样浏览器/服务端的架构为 B/S 架构
当浏览器作为客户端访问服务器之后,取到所有所需的数据,立即断开 TCP 连接,整个 HTTP 连接过程非常短,所以人们也常称 HTTP 协议为无连接的协议这也因为每一次 HTTP 的请求,都是重新开启一个新的连接,而不是在一个历史连接持续工作短链接
Request请求
当我们使用HTTP协议访问某个连接时,首先需要向服务器提交一个Request请求
一般当我们使用浏览器访问Web服务时,由浏览器完成这个工作,Request消息分为三部分,分别包括:Request Line、Request Header、Body
2.常见的请求方式
请求 解释
GET 获取服务端数据,比如浏览一个网站,最普通的动作
POST 向服务端提交数据,比如注册帐号的时候
PUT 向服务端上传数据
DELETE 删除服务端通过 Request-URL 所标示的资源
TRACE 测试服务端是否可以接收到 Request 请求
CONNECT 以管道方式连接代理服务器
OPTIONS 返回服务器所支持的其他 HTTP 请求方法
HEAD 与 GET 方法类似,但不返回服务器响应时的消息体
Django框架 (重点
MVT&MVC
1.Django框架设计模式 主要采用MVT
2.什么是MVT
M-model:模型,操作数据库功能部分
V-View:视图,处理业务逻辑的位置,提取数据、获取用户数据等等操作都在这里
T-Template:模版,用来展示视图操作后的数据,也可以在模版中为用户提供表单,让用户可以提交数据
3.再其他语言框架中,还有一种盛行的模式 叫做 MVC
M-model:模型,和MVT的 m 是一样的,同样用来操作数据库
V-view:视图,和MVT的 T 是一样的,用来进行数据的可视化
C-Controller:控制器,相当于MVT中的 C,用来进行数据的逻辑操作
3.框架安装
python -m pip install --upgrade pip # 升级pip版本命令
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 设置清华镜像
pip install django==2.2.2 # 安装django
项目创建
可以桌面新建一个文件夹,在文件路径中 输入 CMD
会出现一个小黑窗口 , 在小黑窗口 输入命令:django-admin startproject [项目名称]
我刚刚创建了一个 名称叫做 project1 的项目
然后打开我们新建的Django文件夹 会发现有 一个名字 project1 的文件夹 我们可以选中鼠标拉到pycharm
也可以在pycharm里面打开文件
进入pycharm以后我们可以先了解一下 settings.py 里面的文件
可以对应下面描述 找到相对于的Django配置 去了解其意思
BASE_DIR:当前项目工作目录,用来在每一次开启项目时动态找到这个项目运行在当前操作系统下的哪个目录下
SECRET_KEY:加密的hash值以及保护某些签名数据的关键密钥
DEBUG:调试模式,在这个模式下,你可以很清晰的看到出错信息,如果关闭了,那么出错将会变为状态码或者隐蔽性更高的报错页面
ALLOWED_HOSTS:当前主机所拥有的IP哪些可以被外界使用访问Django
INSTALL_APPS:Django项目中所有使用的应用名称,自创建子应用也要加到这里,不然ORM数据库无法被识别到
MIDDLEWARE:中间件,用来在 请求request和 响应reponse过程中添加功能,比如确保安全性,传输保存Session等
ROOT_URLCONF:主路由配置文件,字符串填写 url.py 文件路径
TEMPLATES:模板文件配置项
WSGI_APPLICATION:WSGI 服务器配置项,找到当前 django 下的 wsgi 引入 APP 文件
DATABASES:数据库配置项,默认使用SQLite3,一个本地文件数据库
AUTH_PASSWORD_VALIDATORS:检查用户密码强度的验证程序列表,不过是针对admin组件下的用户,而非自定义
LANGUAGE_CODE:所使用语言文件,一般国内项目采用zh-Hans
TIME_ZONE:所使用时区,一般国内项目采用Asia/Shanghai
USE_I18N:国际化支持 18 表示 Internationalization 这个单词首字母 I 和结尾字母 N 之间的字母有 18 个
USE_L10N:是localization的缩写形式,意即在 l 和 n 之间有 10 个字母
USE_TZ:开启了Time Zone功能,则所有的存储和内部处理,包括 print 显示的时间将是是 UTC 时间格式
STATIC_URL:访问静态资源时的URL**路径
创建子应用及其意义
应用是一个专门做某件事的网络应用程序,比如博客系统中的用户功能部分,一个考试系统中管理试卷的部分。
项目则是一个网站使用的配置和应用的集合,一个项目可以包含很多个app**应用,应用**可以被很多个项目使用。
子应用创建
python manage.py startapp myapp # myapp 应用名称
2.1 模版页面
2.1.1 模版页面返回
现在再来思考一下,只是简单的返回一个html字符串,我们可以满足吗?难道平时的网站就这么朴素吗?
那当然是不行的,返回一个字符串这也太low了,也不好看,那么现在就来返回一个正式HTML页面吧!
模版配置
首先要告诉Django,你准备把接下来的html页面存放在哪里,那么需要打开settings.py文件,找到TEMPLATES选项,修改其中的DIRS属性,在这里添加我们的html文件夹位置
# project.settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
},
},
]
一般我们会把存放HTML的文件夹名字命名为template,翻译过来就叫做模版文件,至于为啥叫模版,我们稍后来揭晓
创建模版
有了这个文件夹的配置之后,接下来在项目根目录下创建与配置同名的文件夹template/
并在其中书写一个简单的html,并命名为index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hi</title>
</head>
<body>
<h1>真不错</h1>
<p>
今天这个天气是<strong>晴天</strong>
</p>
</body>
</html>