Django(请求和响应,GET请求和POST响应,Django的设计模式及模板层,变量和标签,过滤器和继承,url反向解析)

本文详细介绍了Django框架中的请求和响应概念,包括GET和POST请求的处理方式。深入讲解了Django的MTV设计模式,模板层的变量、标签、过滤器和继承,以及URL反向解析的使用。内容覆盖HttpRequest对象、GET和POST请求的区别、模板的动态HTML生成、视图函数中如何渲染模板以及如何在模板中使用变量和标签。最后讨论了模板过滤器和模板继承的实现,以及URL反向解析在模板和视图中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01.请求和响应

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

        响应是指服务器端接受到请求后做出相应的处理后再回复给浏览器端的数据 

请求样例:

 

 请求在Django中实则就是函数视图的第一个参数,即HttpRequest对象

Django接收到http协议的请求后,会根据请求数据报文创建HttpRequest对象

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

例子:

02.GET请求和POST响应

        无论是GET还是POST,统一都有视图函数接收请求,通过判断request.method区分具体的请求动作

GET处理 

GET请求动作,一般用于向服务器获取数据

能够产生GET请求的场景:

        - 浏览器地址栏输入URL回车后

        -<a href = “地址?参数=值&参数=值”>

        -form表单中的method为GET

GET请求方式中,如果有数据需要传递给服务器,通常会用查询字符串(Query String)传递

-- 如:http://127.0.0.01:8000/page?a=100&b=200

例子:

 POST处理

post请求动作,一般用于向服务器提交大量/隐私数据 

03.Django的设计模式及模板层

MTV代表Model--Template--View(模型--模板--视图)模式

        M (模型层) 负责与数据局交互

        V (模板层)负责呈现内容到浏览器

        C(视图层)核心,负责接受请求,获取数据,返回结果

什么是模板

1.模板就是可以根据字典数据动态变化的html页面

2.模板可以根据视图中传递的字典数据动态生成相应的HTML网页

在settings.py中TEMPLATES配置项

        'BACKEND'  指定模板的引擎

        'DIRS'  模板的搜索目录

        'APP_DIRS' 是否需要在应用中搜索模板文件

        'OPTIONS' 有关模板的选项

需要在settings.py文件添加 'DIRS': [os.path.join(BASE_DIR,'templates')],

使用render()直接加载并相应模板

在视图函数中: from django.shortcuts import render      retrun render(request,'模板文件名',字典数据)

04.模板层-变量和标签

  视图函数可以将python变量封装到字典中传递到模板上

  例子: def  xx_view(request):

                    dic = {"变量名1":"值1","变量名2":"值2"}

                     return render(request,'xx.html',dic)

能传递到模板中的数据类型:

str int list tuple dict func obj

在模板中使用变量语法:{{变量名}}  {{变量名.index}} {{变量名.key}} {{对象.方法}} {{函数名}}  

例子

views.py代码:

urls.py代码:

html代码:

 输出代码如下:

模板标签 

作用:将一些服务器端功能嵌入到模板中,例如流程控制等

语法:{%标签%}……{%结束标签%}

if  标签

语法:{% if 条件表达式1 %}……{% elif 条件表达式2 %}……{% endif %}

官方文档:https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/#if

 例子:

urls.py代码: 

views.py代码:

if_html.html代码:

输出如下:

练习:

for标签

语法:{% for 变量 in 可迭代对象 %} …循环语句{% empty %}……可迭代对象无数据时填充的语句  {% endfor %}

内置变量  --forloop

  例子:

if_html代码:

views.py代码:

 urls.py代码:

05.模板层-过滤器和继承

模板过滤器

定义:在变量输出时对变量的值进行处理

作用:可以使用过滤器来改变变量的输出显示

语法:{{变量 | 过滤器1:'参数值1' | 过滤器2:'参数值2'...}}

 继承

模板继承可以使父模板的内容重用,子模板直接继承父模板的全部内容并覆盖父模板中相应的块

语法 -- 父模板中:

        定义父模板中的块block标签

        标识出哪些在子模块中是允许被修改的

        block标签:在父模板中定义,可以在子模板中覆盖

语法:-- 子模板中:

        继承模板extends标签(写在模板文件的第一行)

                例如{%extends 'base.html' %}

        子模板 重写父模板中的内容块

        {% block block_name%}

       子模板块用来覆盖父模板中 block_name块的内容

        {% endblock block_name %}

06.url反向解析

代码中ur出现的位置

一.模板【HTML中】

        1.<a href = 'url>超链接</a>

        2.<form action = 'url  method = 'post'>

二.视图函数中  --302跳转 

httpresponseredirect('url')

url反向解析是指在视图或模板中,用path定义的名称来动态查找或计算出相应的路由

path函数的语法

        path(route,views,name = '别名')

        path('page',view.page_view,name = "page_url)

根据path中的‘name=’关键字传参给url确定了唯一确定的名字,在模板和或视图中,可以通过这个名字反向推断出此url信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值