Django V部分总结一

V部分就是Django Views(视图函数)
其下主要包括两部分:

一,URL配置(URLconf)

是Django所支撑网站的目录

本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

配置部分是在Django项目下的urls.py下的urlpatterns = [ ]部分
具体的格式Djange1.x版本和2.x版本略有不同,这里以2.x
版本为例:
首先from django.urls import path
这里url精确查找方式,用法:
path('url',views.视图函数)放到urlpatterns
一般视图函数都放在app中,所以还要

from app名称 import views

还有一个模糊查找:

from django.urls import re_path

相当于1.x版本里的url
相比于精确查找就是在url部分加入了正则,使用了模糊查找
这里插一句,URL查找是从上到下查找,一旦找到就执行对应views函数,所以在使用模糊查询re_path时要特别注意逻辑顺序

以上两者path(),re-path())都可以加一个那么属性,给url起一个别名,前端直接用别名
作用是前端大量调用这个url是,当后端url名称修改时,前端无须改动,提高可维护性

此外,还有一个

url分发的概念

意思是说在一个Django项目中,一般有多个app
要把url查找分发到各个app中
首先在app下新建一个urls.py文件,存放属于自己的url
形式和在Djiango项目文件夹urls.py中的一样

要想让url分发生效,要在Djiango项目文件夹urls.py中配置

from django.urls import include   #开启url分发功能

然后在urlpatterns 添加path('app名称/', include('app名称.urls'))

之后这种 ip地址:端口号/app/url 就会到对应app下的urls.py查找执行对应的views函数

二,Django Views(视图函数)

也就是根据url来决定要执行的视图函数部分

先看视图函数的基本结构:

def "函数名"(request,*args,**kwargs):
    "函数体"
    return "返回值"

先看参数部分:
必须要有的一个就是request(其它名字也行),里面包含了客户端的所有请求信息
form表单里的请求信息都是用字典的形式存储在request.请求方式中(POST or GET)中
*args 和 **kwargs可以改成通过url有名分组的方式来定的形参名
eg:re_path(r'article/(?P<year>\d{4})/(?P<month>\d{2})',views.article_year_month),
#有名分组正则,执行函数中只能用给定好了的形参名字
ps:第一部分说到的都是无名分组

再看返回值部分:
有下面几种方式:

render , HttpResponse , render_to_response , redirect

都需要导入:

from django.shortcuts import render, HttpResponse,render_to_response,redirect

1.HttpResponse:
基本方式,就和httprequest一样,是http请求中两个核心对象:

    http请求:HttpRequest对象

    http响应:HttpResponse对象

后面几种响应方式最后都是交给了HttpPesponse(源码可知),但不常用,主要用render
形式
return HttpResponse(“字符串”)
字符串中可以是html代码和字符串操作,缺点很明显,耦合性太高,不常用,不细讲

2.render(最最常用)
形式:

return render(request,"html文件名",context对象)

context对象是可选参数

插:1.render会把第二个参数(html文件的字符串形式)实例化为Template对象,把第三个参数实例化为Context对象,然后Template类对象调用render方法,传入Context实例化对象做参数,得到一个结果
2render把处理好的结果会交给Httpresponse返回给客户端,所以要有一个request参数

3.render_to_response
相比较render 就是不用传request对象,当然后面都是交给响应对象HttpResponse处理
不推荐,因为可能有会bug
4.redirect
形式:return redirect(“url路径”)
我的理解是客户端接收到服务端响应的return redirect(“url路径”)后,会按照这个url对服务端再发送请求,所以客户端url地址会变成上面的url路径

另补充一点:要重新通信上一次的对象时,可省略ip地址和端口,这是Django自带的一个同源机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值