Django中url name
花了好长时间才明白这个name参数的含义。便写下来了备忘
当我们在url的时候,一般情况下都是使用很明确的url地址。如在网页里面使用<a href="/login">登录</a>.像这样的链接有很
多。假如有一天,突然需要改变登录的链接,想将/login变成/login_first 这样的话,就需要将url里面的正则改变成
^login_first/$,同事再将<a>标签里面的href变成/login_first。像这样<a>的链接太多了,根本就无法修改。所以这里就可以
使用url里面自带的name的方法。 对于像<a>这样链接的操作。 用法: 不带参数的: {% url 'name' %} 带参数的:参数可以是变量名 {% url 'name' 参数 %} 所以这里的改变为:url('^login_first/$',views.login,name="login_first")(对于其他部分自动补脑),在<a href="{% url
'login_first'%}">. 解释:{% url 'login_first'%},这里的login_first代表着这个url自动去寻找django的url里面name="login_first"这个条链
接,并将前面的url赋给<a>标签中的href。
这时如何让以前的 /add/3/4/自动跳转到新的网址呢?要知道Django不会帮你做这个,这个需要自己来写一个跳转方法。 这里需要我们使用reverse这个函数,作用:reverse 接收 url 中的 name 作为第一个参数
old的方法:url: url(r'^add/(\d+)/(\d+)/$', views.add2),
views: from django.http import HttpResponseRedirect,HttpResponse
from django.core.urlresolvers import reverse
def add2(request,a,b):
c=int(a)+int(b)
return HttpResponse(str(c))
new方法:
url(r'^add/(\d+)/(\d+)/$', views.add2_redirect),
url(r'^new_add/(\d+)/(\d+)/$', views.add2, name='add2'),
views:
from django.http import HttpResponseRedirect,HttpResponse
from django.core.urlresolvers import reverse
##新添的函数
def add2_redirect(request, a, b):
return Redirect(reverse('add2', args=(a, b))
def add2(request,a,b):
c=int(a)+int(b)
return HttpResponse(str(c))
原本我们访问127.0.0.1/add/3/4/ 会得到7 现在的话,我们访问127.0.0.1/add/3/4/会得到新的链接/127.0.0.1/new_add/3/4/,并且新的链接的内容也是7
解释:reverse的第一个参数为add2,那么它就会到url取新的链接,为new_add/,再加上后面的参数,就成为/new_add/3/4,并且使用add2的函数,得到想要的值。
参考:http://www.ziqiangxuetang.com/django/django-url-name.html
Django中url name的更多相关文章
- Django中url匹配规则的补充
Django中url匹配规则是在urls.py文件中配置的. 1.关于正则匹配优先级 在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条. 在url匹配列表中,如果第一条为正则模 ...
- django中url路由配置及渲染方式
今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...
- django中url 和 path 的区别
django中 url 和 path 都是配置路径,有什么不同? django.urls path django.conf.urls url path 与 url 是两个不同的模块,效果都是响应返回 ...
- django 中url与path小记
1. 在django 2.0中增加了一些新的特性 更简单的URL路由语法 (Simplified URL routing syntax) admin应用的针对移动设备的优化改进(Mobile-frie ...
- Django——URL详解/Django中URL是如何与urls文件匹配的
URL标准语法 protocol://hostname[:port]/path/[:parameters][?query]#fragment https://i.cnblogs.com/EditPos ...
- Django 中url补充以及模板继承
Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...
- Django中url使用命名空间的错误
出的错误: 1. Reverse for 'llist' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) ...
- Django中URL有关
django 模板中url的处理 在模板中直接添加‘/home’这样的链接是十分不推荐的,因为这是一个相对的链接,在不同网页中打开可能会返回不一样的结果. 所以推荐的是 1 <a href= ...
- django中url,静态文件,POST请求的配置 分类: Python 2015-06-01 17:00 789人阅读 评论(0) 收藏
平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解.项目目录如下图: 1.URL的配置 当创建好项目后,运行项目就可以看到django默认的页面 ...
- Django中url的反向查询
明确几个概念: application namespace: 正在部署的app的名称,一个app的多个实例应该具有相同的application namespace. 可以通过在URLconf模 ...
随机推荐
- Java+Selenium+Testng自动化测试学习(三)— 断言
1.修改Login类加入断言: 断言:检查我们操作页面后得到的结果与我们预期的结果是否一致. 2.使用xml文件运行所有的测试类: Login类写入两个测试用例: package com.test; ...
- 快速排序 QuickSort (C++迭代,递归)
/* * QuickSort.h * 快速排序(将每一个元素转换为轴点元素) * Created on: 2020年2月12日 * Author: LuYonglei */ #ifndef SRC_Q ...
- java i++与++i的区别
i++是先赋值,然后再自+1:++i是先自+1,后赋值. 用代码表示就是: 若 a = i++; 则等价于 a=i;i=i+1; 而 a = ++i; 则等价于 i=i+1;a=i; 例子: int ...
- 怎么把html页面部署到云服务器上
1,下载nginx 2,把页面放置到云服务器上 3,通过配置nginx conf下的nginx.conf文件,就可以通过ip:port访问到了 链接:https://www.cnblogs.com/f ...
- 后端工具——Maven——初篇——目录
目录 Maven的知识体系包括四个部分.Maven的配置文件,Maven命令,Maven生命周期,Maven插件.在介绍Maven之前,首先需要介绍如何安装Maven. 安装:介绍Maven在Linu ...
- Linux - Shell - find - 基础
概述 find 基础 背景 查找文件 人的记忆能力, 是有限的 计算机里的文件数量, 虽然不是无限, 但是也不少 要去找那些 记不清楚的文件, 必然要用查找 准备 OS centos7 用户 root ...
- ASCII编码,将英文存储到计算机
前面我们已经讲到,计算机是以二进制的形式来存储数据的,它只认识 0 和 1 两个数字,我们在屏幕上看到的文字,在存储之前都被转换成了二进制(0和1序列),在显示时也要根据二进制找到对应的字符. 可想而 ...
- 在同一个tomcat下部署多个springboot项目时,springboot项目无法正常启动的问题
这个问题是基于,不使用springboot内置的tomcat会产生(即使用自己的tomcat时). 今天在部署springboot项目的时候遇到了一个问题,怎么部署都访问不了,在网上查了很多原因,什么 ...
- NW.js构建桌面应用
最近要做个桌面的应用,用起来也方便.找了一圈发现NW.js挺容易上手,分享给大家. NW.js 官网https://nwjs.io/ 1.下载适合当前版本的js [这里下载的SDK版本,方便后续调试] ...
- es8中对string补白的方式
//允许将空字符串或其他字符串添加到原始字符串的开头或结尾for(let i = 1; i < 32; i++) { if(i < 10) { console.log(`0{i}`) }e ...