django url别名和反向解析 命名空间

url别名和反向解析

  1. 我们平时写的url名字都是死的,如果项目过大,需要项目中某个文件名改动一下,那么改动起来就不是一般的麻烦了,所以我们就在定义的时候给url起一个别名,以后不管哪个文件中运用都是用它的别名,这样就方便多了,你的路径名不管怎么改变都不会影响你的操作
  2. 如何给你url起别名
    url(r'^home1/',views.home,name='home'),
    # 像这样,在url后边加一个name叫做home,之后再其他的文件中需要引用这个url就可以直接使用别名
    
    url(r'^home1/(\d+)',views.home,name='home'),
    # 如果分组传参数的这种url要怎么去应用呢
  3. 别名的使用(反向解析
    #在文件中使用时,我们需要导入一个django的模块,这个模块就是专门用来负责反向解析别名的
    from django.urls import reverse
    #使用如下
    reverse('别名')
    #例如:
    return redirect(reverse('home'))     ----  翻译成  /home1/
    # 我们只需要在需要使用这个文件的时候将这个文件的别名使用reverse()方法反解析出来就行了
    
    或者直接可以写成 return redirect('home')    不需要使用serverse也可以解析出来
    
    # 在html文件中的引用
    <a href="{% url 'home' %} ">主页面</a>    ----  翻译成  /home1/
    #使用url对这个别名进行解析
    
    #带参数的反向解析:
    reverse('index',args=(10,11,))   -- /index2/10/
    
    #带参数的反向解析:
    {% url '别名' 参数1 参数2 %}
    例如:{% url 'index' 10 %} -- /index2/10/  <a href='/index2/10/'>hhh</a>

命名空间

? 路由分发

  1. 由于在项目中可能会创建多个不同的app,如果这些app应用的url都写在项目下的urls文件下,如果文件路径过多,就会很多的文件存在,修改起来特别麻烦,所以我们要解决这个问题
  2. 如何解决这个问题呢?
    #我们可以在每个应用下都写上一个urls.py文件,在这个文件中写入我们需要用到的url,
    
    # 但是浏览器找的url时会从你的项目文件urls文件去找,那么我们需要在项目的urls文件也配置一下
    # 首先导入一个包,专门负责路由分发的
    from django.conf.urls import include  
    
    #所以我们在项目下的urls文件中写url时这样写:
    urlpatterns = [
        url(r'^app01/',include('app01.urls')),
        url(r'^app02/',include('app02.urls')),
    ]
    # 这个意思就会只要匹配到访问路径是app01的就去app01.urls中找路径,匹配到访问路径是app02的就去app02.urls中找路径
  3. 在每个app文件下再写一个路由文件urls.py
    1. app01
        urlpatterns = [
            # url(r'^admin/', admin.site.urls),
            url(r'^home1/',views.home,name='home1'),
        ]
    
    2. app02
        urlpatterns = [
            # url(r'^admin/', admin.site.urls),
            url(r'^home2/',views.home,name='home1'),
        ]
    
     # 当通过项目文件中的路由匹配到那个app下的时候就会在这个app路由中找相应的路由地址

命名空间

  1. 由于我们在做项目时会给url起别名,如果有多个应用的url别名一样,那么就会出现查找的文件不对,出现错误
  2. 这样我们就需要在项目的urls文件中在改变一下配置了
    urlpatterns = [
        url(r'^app01/',include('app01.urls',namespace='app01')),
        url(r'^app02/',include('app02.urls',namespace='app02')),
    ]
    
    # namespace = '别名',意思是当前这个app01.urls中的url都归属于当前这个命名空间app01的
  3. 在应用的时候:
    #html文件中
    <a href="{% url 'app01:home' %}">返回首页</a>
    # 在别名的前面你需要加上这个命名空间的名称
    
    #在后端的文件中
    return redirect('app02:book2')   # 在别名的前面你需要加上这个命名空间的名称

原文地址:https://www.cnblogs.com/zhufanyu/p/11665512.html

时间: 2024-09-28 22:09:53

django url别名和反向解析 命名空间的相关文章

Django之url上的include,URL命名和反向解析,命名空间 以及图书管理系统删除功能二合一方法

include其他的URLconfs #At any point, your urlpatterns can "include" other URLconf modules. This #essentially "roots" a set of URLs below other ones. #For example, here's an excerpt of the URLconf for the Django website itself. #It include

django路由层(二) 反向解析和名称空间

url命名和反向解析 根据名字动态获取到对应的路径 可以给每一个路由与视图函数对应关系起一个名字 这个名字能够唯一标识出对应的路径 注意这个名字不能重复是唯一的 应用场景 通过别名来传递路径给到前端或者后端,好处是更加灵活,因为是通过别名进行传递,所以只要修改源路径,其他的层都不需要更改,否则如果直接通过源路径传递,则耦合度较高,不够灵活,维护成本太高 无分组反向解析 第一步: 命名 url(r'^pre/', views.press_list, name='press_list') 第二步:

python之路_day107_django中url反向解析及数据库连接

一.url反向解析 在正式介绍反向解析之前,我们首先介绍一下在django中的url参数,如下为我们url实例,其中name参数就是其别名,也就是我们接下来讲解的反向解析中所依靠的参数. 1.模板中反向解析 在我们的前端页面上,如form表单,我们通常会指定提交的路径,但是以往我们都是将路径写死,这显然不是很合理,因为当url中的路径需要改变的时候,我们又需要逐一去更改页面.这样不合理.所以我们就要用到url的别名进行反向解析. 语法: {% url 'url的别名' %} 实例如下: 2.视图

django系列3.1--url的命名和反向解析

命名URL和反向解析 在网页中某些要提交的地址等,需要改变的时候,此时网页过多,如果一个一个的去改,工作量巨大,这时就可以用到命名url,在html文件的模版中,只写命名,这样当需要我们改变urls.py中的url映射的网页地址时,就方便多了 1.普通的URL urls.py from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^blog/', views.blog, name='xxx')

四十七、django路由匹配,分组,反向解析,路由分发,视图层

路由匹配: urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^text', views.text), url(r'^testadd', views.testadd), ] 第一个参数是一个正则表达式,也就意味着在路由的匹配的时候,是按照正则匹配的规则去匹配, 路由匹配的顺序是从上往下依次匹配,所有如上两个路由test前面一样,第三个路由一直会匹配不上 正确写法: urlpatterns = [ url(r'^admin/', adm

Django中模板总结[模板语言,模板继承,CSRF攻击,反向解析]

模板 概述 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观,而不是程序逻辑.模板的设计实现了业务逻辑view与显示内容template的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用. 创建模板文件夹 在项目的文件里面定义一个templates文件夹 在创建的文件夹里面再创建一个文件夹为每个应用的html文件夹 起名为和应用名同名的文

Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、请求扩展、session

目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 2.使用 二.配置信息 1.默认配置 2.修改方法一--点的方式修改 3.修改方法二--利用字典修改 4.修改方法三--通过py文件修改(常用) 5.修改方法四--利用类或类的路径修改(常用) 6.其他方法修改配置 三.路由系统 1.基本写法 2.转换器 3.路由本质 4.CBV 5.自定义支持正则 四.模板 五.请求与响应 六.session 七.闪现(flash) 1.使用 2.示例

python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] ? 正则表达式: 一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数: 可选的要传递给视图函数的默认参数(字典形式) 别名: 一个可选的name参数 12.361 路由正则表达式 from django.conf.urls imp

django URL反向解析和命名空间

一.反向解析URL 在实际的Django项目中,经常需要获取某条URL,为生成的内容配置URL链接. 比如,我要在页面上展示一列文章列表,每个条目都是个超级链接,点击就进入该文章的详细页面. 现在我们的urlconf是这么配置的:^post/(?P<id>\d+). 在前端中,这就需要为HTML的<a>标签的href属性提供一个诸如http://www.xxx.com/post/3的值.其中的域名部分,Django会帮你自动添加无须关心,我们关注的是post/3. 此时,一定不能硬