django额外参数的传递和url命名
django额外参数的传递
path方法:path(route, view, kwargs=None, name=None)
- path方法可以传递入一个额外参数的字典参数(kwarg),字典里的值就会被传给视图函数。
- 传入的字典里的key必须在视图函数的参数里,否则会报错。
- 当字典参数里的key和url捕获的参数一致时,以额外参数(kwargs)里的为准。
from django.urls import path
from .views import * urlpatterns = [
path('index/<pk>/', index, kwargs={'pk': 20,'id': 30,}),
]传入额外参数
from django.shortcuts import render, HttpResponse # Create your views here. def index(request, pk, id):
return HttpResponse('你输入的参数是pk:{}-id:{}'.format(pk, id))视图函数

返回结果中输入的pk参数是5,但是默认的kwargs里是20,最终以额外参数里的为准。
url命名
path方法里面最后还有个name参数,默认为None,现在有以下场景:
- 当访问莫一页面时,需要跳转到另一页面
from django.shortcuts import render, HttpResponse, redirect # Create your views here. def index(request, pk, id):
return HttpResponse('你输入的参数是pk:{}-id:{}'.format(pk, id)) def show_info(request):
return HttpResponse('<h1>hello world</h1>') def login(request):
return redirect('/teacher/info')视图函数
from django.urls import path
from .views import * urlpatterns = [
path('index/<pk>/', index, kwargs={'pk': 20,'id': 30,}),
path('info/', show_info),
path('login/', login),
]路由配置
- 利用django的redirect方法实现页面的跳转,redirect里面传入一个路径的字符串。

- 当访问login的时候,直接给跳转到了info页面。
- 假设以后info页面的路径发生了改变,当有很多页面都跳向该页面的时候,人为的手动去修改redirect里面的路径会很麻烦。这时候就要用到django的path方法提供的name参数了。
from django.shortcuts import render, HttpResponse, redirect, reverse # Create your views here. def index(request, pk, id):
return HttpResponse('你输入的参数是pk:{}-id:{}'.format(pk, id)) def show_info(request):
return HttpResponse('<h1>hello world</h1>') def login(request):
url = reverse('info')
return redirect(url)from django.urls import path
from .views import * urlpatterns = [
path('index/<pk>/', index, kwargs={'pk': 20,'id': 30,}),
path('info/', show_info, name='info'),
path('login/', login),
] - 首先在需要跳转的页面的path方法里面,给该路由命名。加上name='info'。
- 利用django提供的reverse方法,reverse方法接收一个字符串,该字符串为url的名字。该方法返回该名字的url的路径,再将这个路径重新赋予给redirect实现动态跳转。
- 当不同的项目app里面拥有相同名称的url时,reverse函数就会发生冲突。django提供了一个app_name的变量来区分不同的app下拥有相同name的路由。
from django.urls import path
from .views import * app_name = 'crm' urlpatterns = [
path('index/<pk>/', index, kwargs={'pk': 20,'id': 30,}),
path('info/', show_info, name='info'),
path('login/', login),
]from django.shortcuts import render, HttpResponse, redirect, reverse # Create your views here. def index(request, pk, id):
return HttpResponse('你输入的参数是pk:{}-id:{}'.format(pk, id)) def show_info(request):
return HttpResponse('<h1>hello world</h1>') def login(request):
url = reverse('crm:info')
return redirect(url) - 在app目录下的路由模块(urls.py)中定一个一个app_name的变量,app_name一般为当前app的名字。
- 在reverse函数里用写上'app名字:路由的名字'(app_name:route_name)来对拥有相同名字的url来进行区分。
- reverse返回一个url路径字符串
- reverse传参
- reverse('app:name', kwargs={params:value})
django额外参数的传递和url命名的更多相关文章
- Django 传递额外参数及 URL别名
传递额外参数到视图函数中 在 urls.py 文件中添加下面内容 from django.conf.urls import url urlpatterns = [ url(r'index', view ...
- python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)
12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...
- Django之url上的include,URL命名和反向解析,命名空间
include其他的URLconfs #At any point, your urlpatterns can “include” other URLconf modules. This #esse ...
- Django(7)url命名的作用
前言 为什么我们url需要命名呢?url命名的作用是什么?我们先来看一个案例 案例 我们先在一个Django项目中,创建2个App,前台front和后台cms,然后在各自app下创建urls.py文件 ...
- Django路由系统---django重点之url命名分组
django重点之url命名分组[参数无顺序要求]. settigs.py:增加STATICFILES_DIRS静态资源路径配置,名称为创建的文件夹名称 'DIRS': [os.path.join(B ...
- Django路由系统-URL命名&URL反向解析
命名URL和URL反向解析 前言 起始样式,HTML中的href是写死的,不能更改,如下示例代码: # urls中 urlpatterns = [ url(r'^admin/', admin.site ...
- mvc中view与controll之间传递参数时,可以使用url进行传递
mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...
- pyqt信号和槽传递额外参数
转载:fengyu09 环境:python2.7.8 —— pyqt 4.11.1 使用Pyqt编程过程中,经常会遇到给槽函数传递额外参数的情况.但是信号-槽机制只是指定信号如何连接到槽,信号定义的参 ...
- MVC 使用 Webuploader 插件 传递额外参数 备忘笔记
// 实例化 uploader = WebUploader.create({ pick: { id: '#filePicker-2', label: '点击选择图片' }, formData: { k ...
随机推荐
- LY.JAVA面向对象编程.工具类中使用静态、说明书的制作过程、API文档的使用过程
2018-07-08 获取数组中的最大值 某个数字在数组中第一次出现时的索引 制作说明书的过程 对工具类的使用 获取数组中的最大值 获取数字在数组中第一次出现的索引值 API的使用过程 Math
- 登录验证码实现(Captcha)
登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...
- linux 播放加密DVDs
尝试下 https://www.cyberciti.biz/faq/howto-ubuntu-linux-playback-dvd/
- Unity中DOTween插件的DOTweenPath轨迹移动
先来看一下DOTweenPath组件的截图 1.Scene View Commands (1)SHIFT+CTRL:add a waypoint 加一个轨迹点 (2)SHIFT+ALT: ...
- 【转载】JVM系列二:GC策略&内存申请、对象衰老
JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generatio ...
- FPGA的GTP(aurora 协议)高速串行接口数据收发(转)
reference:https://blog.csdn.net/qq_40261818/article/details/83039829 PG046-Aurora 8B/10B Logicore I ...
- Problem D: 求(x-y+z)*2
Description 编写一个程序,求解以下三个函数: f(x,y,z)=2*(x-y+z) f(x,y) =2*(x-y) f(x) =2*(x-1) 函数调用格式见append.cc. ...
- UNITY3d在移动设备上的一些优化实战
项目进入了中期之后,就需要对程序在移动设备上的表现做分析评估和针对性的优化了,首先前期做优化,很多瓶颈没表现出来,能做的东西不多,而且很多指标会凭预想,如果太后期做优化又会太晚,到时发现一些问题改起来 ...
- 九、编写led驱动
led.c #include <linux/init.h> #include <linux/module.h> #include <linux/cdev.h> #i ...
- vue 手写组件 集合
Num.1 : 链接 向右滑动, 显示删除按钮, 根据touchStart touchEnd 的 clientX 差距 > 30; 说明是向左滑动, 显示; 改变 e.currentTarg ...