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')

]
 # name='xxx'是url的命名

 url的命名使用:

?   1.视图函数

   2.html网页的模版中

1.视图函数

  views.py

from django.shortcuts import render, HttpResponse, redirect, reverse

def blog(request):
  url = reverse('xxx')
  print(url)
  return HttpResponse('blog')

  这时,我们访问地址就可以得到反向的url,views.py中的函数改为

def blog(request):
  return redirect(reverse('xxx')) # ----> /app01/blog  [blog就是xxx找到的]
2.模版中使用

  语法:

{% url 名字%}

  示例:

<a href="{% url 'xxx' %}">url命名和反向解析</a>

二.使用分组的形式

1.视图函数中应用

  urls.py

from django.conf.urls import url
from app01 import views

urlpatterns = [
??url(r'^home/', views.home, name='home'),
??url(r'^blog/(\d{4})/([1-9]{2})', views.blog, name='xxx'),
]

  veiws.py

from django.shortcuts import render, HttpResponse, redirect, reverse

def blog(request,y,m):
??url = reverse('xxx')
??print(url)
??return redirect(reverse('xxx'))
??
def home(request):
??url = reverse('xxx',args=('2018','12'))
??print('home的url',url) ?????????????# /blog/2018/12
??return HttpResponse('HOME页面')

  这时候你访问 http://127.0.0.1:8000/home/ 就会得到 home的url /blog/2018/12

2.模版中使用

{% url 'xxx' 参数%}

三.使用命名分组

1.视图函数中的应用

  urls.py

from django.conf.urls import url
from app01 import views

urlpatterns = [
??url(r'^home/', views.home, name='home'),
??# url(r'^blog/(\d{4})/([1-9]{2})', views.blog, name='xxx'),
??url(r'^blog/(?P<year>\d{4})/(?P<month>[1-9]{2})', views.blog, name='xxx'),
]

  views.py

from django.shortcuts import render, HttpResponse, redirect, reverse

def blog(request,y,m):
??url = reverse('xxx')
??print(url)
??return redirect(reverse('xxx'))

def home(request):
??# url = reverse('xxx',args=('2018','12'))
??# print('home的url',url) # 也可以使用
?
??url = reverse('xxx', kwargs={'year':'2018','month':'12'})
??print('home的命名的url', url)
?
??return HttpResponse('HOME页面')

2.模版中使用

  示例:

{% url 'del_pub' year='2018' month='12' %} ???// del_pub别名

原文地址:https://www.cnblogs.com/robertx/p/10427133.html

时间: 2024-10-09 23:13:11

django系列3.1--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

第61篇 Django 路由系统 正则表达式和二级路由 路由的命名和反向解析

1. 正则表达式 1. Django路由系统匹配URL路径的时候是从上到下按照注册顺序来的 1.1Django1.11 与Django2.0区别 以及过度转换 2. Django的路由系统只匹配URL路径,不匹配域名.端口.URL参数 3. 分组匹配 --> 相当于给视图函数传位置参数 4. 分组命令匹配 --> 相当于给视图函数传关键字参数 r'^xxxx$' r一定要写上,代表里面的字符串是原始的字符串不需要转译 5. 注意: 分组匹配和分组命名匹配不能混合使用!!! 6.匹配不成功是否自

Django之url反向解析

在urls.py文件中,在进行url映射时,为请求的url命个名,以便在模板页面或者views.py视图中可以进行反向解析,同时在修改了url映射的请求路径,名称不变的情况下,不再修改模板页面或者视图中的数据,项目不受影响正常执行!url标签中使用模板变量和普通标签参数一样,空格隔开,{{ % url   别名   %}}即可. urls.py文件设置: url(r'^url_reverse/', views.url_reverse,name="view_reverse"), url(

Django 正向解析与反向解析

正向解析就是按照顺序查找访问(urls.py---view--templates) 反向解析就是根据命名空间命名来调到指定的页面 1,创建urls from django.urls import path,include,re_path from myapp.d2_views import Index from myapp.d3_views import Avgage from django.views.generic import TemplateView from myapp.d11_vie

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.视图

Python - Django - 命名 URL 和反向解析 URL

命名 URL: test.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试页面</title> </head> <body> <p>测试页面</p> <form action="/test/" method=&quo

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 系列博客(七)

Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 CBV 和 FBV,还有简单的文件上传. 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以.无论视图本身包含什么逻辑,都要返回