url路由配置及渲染方式

-- django的url规则

django的路由系统
当一个请求来到时
1.首先到项目目录下的urls.py (根URLconf模块)中,查找路由规则
2.根URLconf模块,里面定义了urlpatterns变量
3.urlpatterns是一个(django.urls.path,django.urls.re_path 对象)列表
4.按顺序运行每个url模式。在第一个匹配的模板停止
5.一旦匹配,django 导入并调用给定的视图
6.如果中间出错,或者没有匹配到,返回404

-- path方法,捕获参数,路径转换器  

  -path(route,view,kwargs=None,name=None)
  -route 是一个字符串的url规则
  -view 是一个视图
  - kwargs 额外参数,传递给view,必须是一个字典
  - name url的命名

  -- 在url中捕获参数
  使用`<变量名>`可以捕获url中的值传递给视图
  ** 捕获的值是 字符串

访问学生详情:

views.py

def detail(request,pk):
    return HttpResponse(‘学生id为%s的详情页‘%pk)

urls.py中添加

path(‘detail/<int:pk>/‘, views.detail),   #int为对对象pk的约束条件,必须为整数。路径转换器

结果如图:

第二种解释,`<变量名>`可以捕获url中的值传递给视图,并且有多个值时是一一对应

views.py如下:

def detail(request,slug,pk):
    return HttpResponse(‘学生id为%s的详情页‘%pk)

urls.py

path(‘detail/<int:pk>/<slug>/‘, views.detail),

结果如图:

3.使用别的符号,也可以访问例如:-

path(‘detail/<int:pk>-<slug>/‘, views.detail),

常用的转换器:
  -- str 匹配除了‘/’路径之外的所有字符串
  -- int 匹配任意整数
  -- slug 匹配任意ascii字符,加上连字符和下划线
  -- uuid 格式化id
  -- path 匹配任意非空字符

-- 使用正则表达式 re_path(route,view,kwargs=None,name=None)
python 中正则表达式的分组命名 格式:(?P<name>pattern)  分组按照关键字参数,不分组按照位置参数

如上面所示,输入的变量没有限制,比如年份是4位数字,月份为1-12的数字。

views.py

def student(request,year,mon):
    return HttpResponse(‘%s年 %s报名的学生‘%(year,mon))

urls.py中

   re_path(‘student/(?P<year>\d{4})/(?P<mon>\d[1-12])/‘, views.student),  #两种方法都可以
    # re_path(‘students/(?P<year>\d{4})/(?P<mon>[0-9]|1[0-2])/‘, views.student),

结果如下:

按照位置参数,容易出问题

urls.py

  re_path(‘student/(\d{4})/(\d[1-12])/‘, views.student),

views.py

def student(request,mon,year):
    return HttpResponse(‘%s年 %s报名的学生‘%(year,mon))

结果如下:

- django 搜索的是什么?
只搜索路径,不搜参数,不搜索请求方法
同一个url可以匹配到get post

原文地址:https://www.cnblogs.com/taoge188/p/10575696.html

时间: 2024-11-05 21:46:29

url路由配置及渲染方式的相关文章

django中url路由配置及渲染方式

今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 创建视图并访问 项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py. 然后在views.py中,导入头文件  from django.http import HttpResponse 然后我们在views.py中,写一些Python函数,用来

8.MVC框架开发(URL路由配置和URL路由传参空值处理)

1.ASP.NET和MVC的路由请求处理 1)ASP.NET的处理 请求---------响应请求(HttpModule)--------处理请求(HttpHandler)--------把请求的资源处理之后返回给客户端 2)MVC的处理 由ASP.NET衍生出来,也遵循请求.响应.处理.资源返回给客户端的过程 请求-----URLRoutingModule(响应路由请求)-----RoutingTable(路由表)(检索请求路径是否和路由表里的路由匹配)-----生成一个路由映射,生成一个Ro

SpringMVC,3种不同的URL路由配置方法 [转]

SpringMVC中配置URL拦截,非常简单.网上找个示例,就能通过.但是,在我做了好几个Web项目,又参与了别人主导的Web项目时,发现URL配置也非常有学问. 1. 先说说一种比较常见的: <servlet> <servlet-name>theDispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-clas

SpringMVC,3种不同的URL路由配置方法(这根本不是一个小问题)

SpringMVC中配置URL拦截,非常简单.网上找个示例,就能通过.但是,在我做了好几个Web项目,又参与了别人主导的Web项目时,发现URL配置也非常有学问. 1. 先说说一种比较常见的: <servlet> <servlet-name>theDispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-clas

SpringMVC,3种不同的URL路由配置方法

1. 先说说一种比较常见的: <servlet> <servlet-name>theDispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name>

ThinkPHP URL 路由功能详解与实例

本节内容导读 本节内容主要介绍 ThinkPHP 路由功能与 U方法的使用,分为下面几个部分: ThinkPHP URL 路由功能详解:见本页下面文字 ThinkPHP 正则路由与实例 ThinkPHP U方法:使用U方法自动生成URL超链接 ThinkPHP 3.0 版本的路由功能较 2.x 版本有较大的变更,如果您的版本是 2.x,请参阅下面的文档: ThinkPHP 2.0 URL 路由(2.0版本适用) ThinkPHP 泛路由使用详解(2.0版本适用) ThinkPHP 2.1 路由规

Django之url路由

Django之url路由 url路由介绍 url路由是关联url及其视图函数关系的过程. 作用就是使views里面处理数据的函数与请求的url建立映射关系 url路由配置 Django的url路由配置在settings.py文件中ROOT_URLCONF变量指定全局路由文件名称. 注意:默认创建项目的时候,就会配置好,如果想使用别的配置文件自行修改. Django的URL路由流程 Django查找全局urlpatterns变量(urls.py) 按照先后顺序,对URL逐一匹配urlpattern

Vue配置路由和传参方式及路由守卫!

安装路由 npm i vue-router -S 引入路由 import VueRouter form VueRouter 注入路由模块 Vue.use(VueRouter) 定义路由匹配规则 let routes = [ {...}, {...} ] 上列匹配规则中 对象有如下属性 path : 路由路径 component : 所加载的组件 name : 别名 redirect : 重定向 children : 子级路由 创建路由实例 let router = new VueRouter({

Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM

web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单的web框架: 因为我们不希望接触到TCP连接.HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务. 这个接口就是WSGI:Web Server Gateway Interface. #---------------------myweb.py-------