Django框架 URLconf模块

URLconf

1. 介绍

  我们要在Django项目中为应用程序设计URL,我们可以创建一个名为URLconf(通常为urls.py)的Python模块。
  这个模块是纯Python代码,是一个简单的正则表达式到Python函数(视图)之间的映射。

下面,我将会通过一个例子来为大家进行讲解:

1)首先,我们先新建一个名为test的Django项目,然后为这个项目创建一个名为testapp的应用。
2)我们一般在自定义应用(testapp)中创建一个urls.py(路由配置文件)。
之后在test/urls.py中引用它,目的是将应用的urls配置到应用内部,数据更清晰并且易于维护。

test/urls.py中写入一条语句:

 path(‘’, include(‘testapp.urls’)),

注意点:

  1. 在test/urls.py中进行包含配置,在各自应用中创建具体配置;

  2. 定义urlpatterns列表,存储path()对象,这个名称是固定的;

  3. urlpatterns中的每个正则表达式在第一次访问它们时被编译,这使得运行很快。

3)testapp/urls.py:指定请求地址与视图的对应关系。

2. 配置路由

  1. 要从URL捕获值,请使用尖括号;
  2. 捕获的值可以选择包括转换器类型。例如,用于<int:name>捕获整数参数。如果不包括转换器/,则匹配除字符之外的任何字符串;
  3. 无需添加斜杠,因为每个URL都有该斜杠。例如articles,不是/articles。

3. 路径转换器

默认情况下,以下路径转换器可用:

  1. str - 匹配任何非空字符串,但路径分隔符除外/。如果表达式中不包含转换器,则为默认设置。

  2. int - 匹配零或任何正整数。返回一个int。

  3. slug - 匹配任何由ASCII字母或数字以及连字符和下划线字符组成的子字符串。例如, building-your-1st-django-site。

  4. uuid - 匹配格式化的UUID。为防止多个URL映射到同一页面,必须包括破折号并且字母必须小写。例如,075194d3-6885-417e-a8a8-6c931e272f00。返回一个 UUID实例。

  5. path - 匹配任何非空字符串,包括路径分隔符 ‘/‘。这样一来,您就可以匹配完整的URL路径,而不仅仅是URL路径的一部分str。

4. 正则表达式

  如果路径和转换器语法不足以定义URL模式,则还可以使用正则表达式。为此,请使用re_path()代替path()。

&emsp;&emsp;在Python正则表达式中,命名正则表达式组的语法为(?P<name>pattern),其中name是组的名称,并且pattern是匹配的某种模式。

5. 获取参数值

  用户通过在浏览器的地址栏中输入网址请求网站,对于Django开发的网站,由哪一个视图进行处理请求,是由URL匹配找到的。

  请求的URL被看做是一个普通的Python字符串,进行匹配时不包括域名、get/post参数。 如请求地址如下:http://127.0.0.1:8000/delete1/?a=10

去除掉域名和参数部分,并将最前面的/去除后,只剩下如下部分进行匹配:delete1/

1)URL如下:

re_path(r'^delete(\d+)/$',views.show_arg),

2)创建视图show_arg如下:

def show_arg(request,id):
    return HttpResponse('show arg %s'%id)

6. 视图

视图函数(或简称视图)只是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页的HTML内容,重定向,404错误,XML文档或图像。视图本身包含返回该响应所需的任何任意逻辑。该代码可以存在于您想要的任何地方,只要它在Python路径上即可。为了将代码放在某处,惯例是将视图放在一个名为的文件中views.py,该文件位于项目或应用程序目录中。

  • 返回错误视图
    Django内置处理HTTP错误的视图,主要错误及视图包括:

404错误:page not found视图;

500错误:server error视图。

如果想看到错误视图而不是调试信息,需要修改test/setting.py文件的DEBUG项。

DEBUG = False
ALLOWED_HOSTS = ['*', ]

视图处理过程如下图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值