IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django框架学习(3) -> 正文阅读

[Python知识库]Django框架学习(3)

目录

一.请求与响应

1.请求

2.响应

二.GET 和POST

1.GET

2.POST

三. django的设计模式和模板层

? 1.mvc和mtv??

?

? 2. 模板层?

? ?3.模板层变量

?四.URL反向解析

? 1.url出现位置

? 2.url书写规范

? ?3.url反向解析


一.请求与响应

? 请求是指浏览器端通过HTTP协议发送给服务器端的数据

? 响应是指服务器端收到请求后做出响应的处理再返回给浏览器端的数据

1.请求

? 包含三部分:起始行,headers,body

三种最常用的请求

GET:请求指定的页面信息,并返回实体主体

HEAD:类似与GET只不过返回响应中无具体内容,用于获取报头

POST:向指定资源提交数据进行处理请求(例如提交表单或上传文件),数据包含在请求体中,? POST请求可能会导致新的资源建立或已有资源修改

? 在Django中实则就是视图中的第一个参数,即HttpResponse对象

? Django在收到http协议之后,会根据数据报文创建HttpResponse对象

? HttpResponse对象通过属性描述了请求的所有相关信息

? path_info :url字符串

? method:字符串,表示HTTP请求方法

? GET:QueryDick查询字典的对象,包含GET请求的所有数据

? POST:QueryDick查询字典的对象,包含POST请求的所有数据

? FLILES:类似与字典的对象,包含上传的所有文件信息

? COOKIES:python字典,包含所有的cookies,键值都为字符串

? ?session:类似于字典,表示当前会话

? ?body:字符串,请求体的具体内容

? ?scheme:请求协议

? ?request.MATE:请求中的元数据(消息头)

? ?request.META['REMOTE_ADDR']:客户端地址

2.响应

?包含三部分:起始行,headers,body

? 响应状态码

分类分类描述
1**信息,服务器收到请求,需要请求者继续操作
2**成功,操作成功接受并受到处理,200(成功)
3**重定向,需要进一步操作,301(永久重定向),302(临时)
4**客户端错误,包含语法错误,或无法完成请求,404(网页不存在)
5**服务器错误,服务器在处理请求时发生错误,500(内部服务器出错)

? Django中的响应对象:

? 构造函数格式:HttpResponse(content=响应体,content _type:响应体数据类型,status:状态码)?

? 作用:向客户端返回响应,并携带相应响应体的内容

? content_type 类型

-'text/html'(默认的,html文件)
-'text/plain'(纯文本)
-'text/css'(css文件)
-'text/javascript'(js文件)
-'multipart/form-data'(文件提交)
-'application/json'(json传输)
-'application/xml'?(xml文件)?

HttpResponse子类?

类型状态码
HttpResponseRedirect?302
HttpResponseNotModified304
HttpResponseBadRequest400
HttpResponseNotFound404
HttpResponseForbidden403
HttpResponseServerError?500?

?在使用HttpResponse子类时,需要import对应子类?


二.GET 和POST

? 无论是GET还是POST,同意由视图函数接受请求,通过判断request .method来区分具体请求动作

1.GET

? GET请求一般用于向服务器获取数据

? 产生GET请求的场景:?

  • 浏览器输入URL回车后
  • <a href="地址?参数=值">
  • from表单中method为get???

? ?在GET中如果有数据传递给服务器,通常用QueryString,注意不要传递敏感信息

? GET方法

?request.GET['参数名']? //当没有这个参数时,会直接报错

request.GET.get['参数名','默认值']? ?//当没有这个参数时,会按默认值处理

request.GET.getlist['参数名']? ? //,当一个参数对应多个值时,返回一个列表

2.POST

? 一般用于向服务器发送隐私/大量数据 如博客,密码等

? POST方法?

request.POST['参数名']

request.POST.get['参数名','默认值']

request.POST.getlist['参数名']? ??

? Django自带csrf验证,当前没有掌握,所有直接在settings.py文件中将其注释掉即可?


三. django的设计模式和模板层

? 1.mvc和mtv??

MVC?代表?Model-View-Controller(模型-视图-控制器)模式。

M模型层(Model),主要用于对数据库层的封装
V视图层(View)用于向用户展示结果(WHAT+HQW)
C?控制(Controller,用于处理请求、获取数据、返回结果(重要)

作用:降低模块间的耦合度(解耦)

MTV?代表?Model-Template-View(模型-模板-视图)?模式。
M?模型层(Model)?负责与数据库交互
T模板层(Template)负责呈现内容到浏览器(HOW)
V视图层(View)是核心,负责接收请求、获取数据、返回结果(WHAT)

作用:降低模块间的耦合度(解耦)

? 2. 模板层?

? ?模板是可以根据视图层传入字典动态变化的HTML网页

? ? a.创建模板文件夹<项目名>/templates
? ? ? 在settings.py中?TEMPLATES?配置项
? ? ? 1.?BACKEND:指定模板的引擎
? ? ? 2.?DIRS:模板的搜索目录(可以是一个或多个)
? ? ? 3.?APP_DIRS:是否要在应用中的templates文件夹中搜索模板文件
? ? ? 4.?OPTIONS:有关模板的选项


? ? ? 目前配置项中需要修改部分
? ? ? 设置DIRS?-'DIRS':?[os.path.join(BASE_DIR,'templates')].

? ? ? ?若无引入os需要import os

b.模板的加载方式

from django.shortcuts import render

return render(request,'模板名称' ,字典数据)

c.模板层和视图层的交互

? 视图函数可以将python变量装到字典中传到模板层中

def index(request):
    dic={
        'username':'zzys'
    }
    return render(request,'模板层文件',dic)
//dic可用local()方法传入所有参数

? ? 模板层语法

<div> myname is {{ username }}</div>

? ?3.模板层变量

? ? a.能够传到模板层中的数据类型

? ? ? ?str,int,dic,func,obj,list,tuple

? ? ?b.在模板中使用变量语法

? ? ? ?{{变量名}},{{变量名.index}},{{变量名.key}},{{对象 .方法}},{{函数名}}

? ? ?c.模板标签

? ? ? ? 可以将服务端的一些流程控制嵌入到模板层中

? ? ? ?标签语法? {% 标签?%}

? ? ? ? ? ? ? ? ? ? ? ? {% 结束标签 %}

? if标签

{% if条件表达式 %}

{% elif 条件表达式 %}

{% else %}

{% endif %}

for标签

{% for 变量 in 可迭代对象 %}
    可迭代语句
{% empty %}
    可迭代对象无数据时执行的语句
{% endfor %}

??django对于内置标签的介绍


?四.URL反向解析

? 1.url出现位置

<a href="url"></a>
<from action="url"> </from>
//视图函数中302跳转
return HttpResponse('url')

? 2.url书写规范

? ?a.绝对地址

http://127.0.0.1:8000/page/1

? b.相对地址

“/page/1”
//以'/'开头的相对路径,浏览器会将协议,ip,端口和当前url组合访问
“page/1”
//没有'/'开头,浏览器会识别当前地址栏的URL最后一个/然后再加上此URL

? ?3.url反向解析

? ?url反向解析是指在视图或模板中,用path的第三个参数 name来进行动态查找或计算出当前URL

? ?注意:name是唯一的,不能重复

? ? a.url在模板中的使用

{% url 'name' '参数1' '参数2' %} //若此url含有转换器,可直接传参数

? ? b.url在视图中的使用

from django.urls import reverse

reverse('别名',args=[],kwargs=[])

例如:

print(reverse('page',args=[1000]))
print(reverse('page',kwargs=['name'='zzys',age='10']))
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:28:05  更:2022-03-15 22:30:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:31:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码