django admin中html页面在哪里_Django路由系统精讲

本文深入探讨Django的路由系统,解释如何通过ROOT_URLCONF建立URL与视图函数的映射。介绍了url函数的参数,展示了配置URL以实现页面访问的示例,并提到了Django 2.0引入的path()和re_path()新方法,旨在简化URL配置。
摘要由CSDN通过智能技术生成

在《URL是什么》一节中,我们对 URL 有了基本的认识,在本节将对 Django 的路由系统展开详细的讲解, 让我们更加清楚的了解 URL 在 Django 中到底是如何应用的。

 1. Django 路由系统应用

一个用户向 Web 站点发送请求,是通过 URL 实现的,当 Web 服务器端接收到用户请求后,它又是怎么处理的呢?通过 MTV 的设计模式,我们可以得知,首先用户请求会到达相应的视图函数,那么视图函数又是怎样找到相应的访问资源的呢,在这里就用到了“路由系统”。
Django 中利用 ROOT_URLCONF 构建了 URL 与视图函数的映射关系。在 django.conf.urls 中封装了路由模块,新建的 Django 项目中提供了 urls.py(创建项目后自动生成的配置文件) 路由配置文件,urls.py 文件中定义了一个 urlpatterns 的列表,它是由 url( ) 实例对象组成的列表,Django 中 url 的定义就是在这个列表完成的。

from django.conf.urls import urlurlpatterns=[url(r '^admin/',admin.site.urls),...]
后台 Admin 管理系统的路由就定义在了列表第一个位置,下面我们对路由的语法格进行简单说明:
  1. url(regex,view,name=None)

上述 url 的参数解析如下:

  • regex,匹配请求路径,用正则表达式表示;

  • view,指定 regex 匹配路径所对应的视图函数的名称;

  • name,是给 url 地址起个别名,在模板反向解析的时候使用,这个知识点后面还有介绍。

1)配置第一个URL实现页面访问

在 urls.py 的同级目录下,新建 views.py 文件,把它作为编写视图函数的 View 层,然后在 views.py 中编写如下代码:

from django.http import HttpResponsedef page_view(request):html='

欢迎来到,C语言中文网,网址是http://c.biancheng.net'

return HttpResponse(html)
假如现在有一个名叫 “myject”的 Django 项目,首先需要在 urls.py 文件中导入 views.py, 这么做的目的是把 URL 与视图层进行绑定,然后在 urls.py 的 urlpatterns 中编写如下代码:
from django.conf.urls import urlfrom django.contrib import adminfrom myject import viewsurlpatterns = [url(r'admin/', admin.site.urls),url(r'^page$/',views.page_view),]
上述代码解析:
  • 代码的前 3 行分别对 URL 模块、admin 模块、以及视图层 views 做了导包操作;

  • 路径地址被定义为 page,也就是在本机浏览器地址栏输入:http://127.0.0.1:8000/page 进行访问,views.page_view将 page/ 路径与对应的视图函数进行了关联。

那么通过上述的代码就完成了路由的配置。在项目运行后,通过访问对应的地址就可以得到相应的页面了,如下图所示:

9521a4634ad59da8c5271e972b67e2f9.png图1:C语言中文网欢迎你

1)正则与正则分组使用

在 Django 的路由系统中,正则匹配得到了充分的使用,比如要匹配任意 1000个页面,那么正则匹配路由地址可以写为:

  1. url(r'^page(\d+)',views.page_view)

同时也可以使用正则分组的方式匹配地址:

r'^(\d+)/(\w{3})/(\d+)' 匹配类似于 http://127.0.0.1:8000/521/Django/1314的地址

2)正则捕获组使用

捕获组:

  1. url(r'^person/(?P\w+)/(?P\d{1,2})',views.person_view)

在视图函数层,用函数关键字传参的方法,将 name 与 age 传递给视图函数。

def person_view(request,name,age):s = '姓名:' + names += ' 年龄: ' + agereturn HttpResponse(s)
一个分组表示一个参数,多个参数需要使用多个分组,并且使用 / 隔开。

2. path()与re_path()

Django 的路由系统使用方法简洁且容易理解,这大大降低了如何配置 URL 的难度。
在 Django 2.0 版本中推出了新的用法 path() 和 re_path(),进一步提升了 Django 的效率与使用的简洁性。2.0 版本以后虽然推出了新的方法,但是 1.0 版本的 URL 用法仍然可以在 2.0 版本中使用,向前做了兼容。

提示:我们可以简单的理解为:re_path() 等同于 1.0 版本的 url 正则匹配方法,而 path() 有其特定的使用方法,在后续的章节将会对其进行详细的介绍。

3453551a70cb1e39263245843b4a98bd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值