【Django 笔记】视图---URL路由、自定义错误页面、HttpRequest对象、Ajax、Cookie、session

这篇Django笔记详述了URL配置过程,包括路径转换器、视图参数默认值和捕获参数。讲解了HttpRequest对象的GET和POST属性,以及如何处理Ajax请求。此外,还涵盖了Cookie和session的使用,包括设置、读取和管理。提供了自定义错误页面的方法,以及Django处理请求的流程。

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

 

笔记主要基于官方文档,从中提取要点和记录笔记,关键处包含了官方文档链接。详见官方文档。

官方文档:Django documentation 

博客推荐:Django2.2教程

官方文档视图层:视图层

目录

1.URL路由

1.1.URL配置过程(重要)

1.2.Django 如何处理一个请求(了解)

......

2.自定义错误页面

3.HttpRequest objects

4.Ajax

5.Cookie

6.session


 

视图

视图负责接受Web请求HttpRequest,进行逻辑处理,与M和T进行交互,返回Web响应HttpResponse给请求者。也可能重定向 redirect,还可以返回json数据

 

使用视图的过程

视图就是一个python函数,被定义在"应用/views.py"文件中。 使用视图时需要进行两方面操作,两个操作不分先后。

1)在"应用/views.py"中定义视图

2)配置URLconf,将视图函数和url对应起来

 

1.URL路由

部分相关官方文档:

博客:https://www.liujiangblog.com/course/django/134

 

Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的。所以需要配置URLconf,将视图函数和url对应起来。

URL路由在Django项目中的体现就是urls.py文件,提倡项目有个urls.py,各app下各有一个app urls.py,既集中又分治,是一种解耦的模式。

:路由的编写方式是Django2.x和1.x最大的区别所在。Django官方将原来的正则匹配表达式,改为更加简单的path表达式,但依然通过re_path()方法保持对1.x版本的兼容

 

1.1.URL配置过程(重要)

  1. 在项目的urls文件中包含具体应用的urls文件,在具体应用的urls文件中包含具体url和视图的对应关系。
  2. url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数。

具体配置例子和path函数可参考入门篇的:编写视图和URLConf

 

1.2.Django 如何处理一个请求(了解)

可能在URL配置过程中,可能会知其然而不知其所以然,这就需要了解Django 如何处理一个请求(跳转官方文档)。

当用户请求一个页面时,Django根据下面的逻辑执行操作:

  1. 决定要使用的根URLconf模块。。通常,这是 ROOT_URLCONF 设置的值,但如果传入 HttpRequest 对象拥有 urlconf 属性(通过中间件设置),它的值将被用来代替 ROOT_URLCONF 设置。通俗的讲,就是可以自定义项目入口url是哪个文件!
  2. Django 加载该模块并寻找可用的 urlpatterns 。它是 django.urls.path() 和(或) django.urls.re_path() 实例的一个列表(sequence)。
  3. Django 依次匹配每个URL 模式,在与请求的URL 匹配的第一个模式停下来。即url匹配是从上往下的短路操作,所以url在列表中的位置非常关键。
  4. 一旦有 URL 匹配成功,Djagno 导入并调用相关的视图,这个视图是一个简单的 Python 函数(或基于类的视图 class-based view )。视图会获得如下参数:
    • 一个 HttpRequest 实例。
    • 如果匹配的 URL返回了没有命名的组,那么匹配的内容将作为位置参数提供给视图。
    • 关键字参数由表达式匹配的命名组组成,并由 django.urls.path() 或 django.urls.re_path() 的可选 kwargs 参数中指定的任何参数覆盖。
  5. 如果没有 URL 被匹配,或者匹配过程中出现了异常,Django 会调用一个适当的错误处理视图。参加下面的错误处理( Error handling )。

 

1.3.路径转换器

默认情况下,Django内置下面的路径转换器:

  • str:匹配任何非空字符串,但不含斜杠/,如果你没有专门指定转换器,那么这个是默认使用的;
  • int:匹配0和正整数,返回一个int类型
  • slug:可理解为注释、后缀、附属等概念,是url拖在最后的一部分解释性字符。该转换器匹配任何ASCII字符以及连接符和下划线,比如building-your-1st-django-site
  • uuid:匹配一个uu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值