URL

url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)

会把(?P\d+)和(?P\d+)传到后台

需要在函数添加参数

def detail(request, *args,**kwargs):
pass

第一种写法:url(r'^detail-(\d+)-(\d+).html', views.detail)

def func(request, nid, uid):
pass def func(request, *args):
args = (2,9) def func(request, *args, **kwargs):
args = (2,9)

(\d+)会传到*args里面

第二种写法:url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)

def func(request, nid, uid):
pass def funct(request, **kwargs):
kwargs = {'nid': 1, 'uid': 3}

(?P\d+)会传到**kwargs

name自定义URL名称

	对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****

	url(r'^asdfasdfasdf/', views.index, name='i1'),
url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),
url(r'^buy/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),

这个那么name参数到底有什么作用呢?

{% url "i1" %} # asdfasdfasdf/

{% url "i2" 1 2 %} # yug/1/2/

{% url "i3" pid=1 nid=9 %} # buy/1/9/

当你urls.py里面的地址进行修改之后,只有模板里面写的是name的值,模板文件不用改,都会随着URL的改变而改变,省了很多事。

reverse函数

	def func(request, *args, **kwargs):
from django.urls import reverse url1 = reverse('i1') # asdfasdfasdf/
url2 = reverse('i2', args=(1,2,)) # yug/1/2/
url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/

反转,什么是反转?

就是把URL地址所对应的“views函数”或者是“URL对应的name参数”逆向解析成URL地址

示例1:通过views函数反解析出URL:

模板文件

<a href="{% url 'news.views.year_archive' 2012 %}">2012 Archive</a>
{# Or with the year in a template context variable: #}
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'news.views.year_archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

解析函数

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect def redirect_to_year(request):
# ...
year = 2006
# ...
return HttpResponseRedirect(reverse('news.views.year_archive', args=(year,)))

示例2:通过name反解析出URL:

模板文件

	url(r'^asdfasdfasdf/', views.index, name='i1'),
url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),
url(r'^buy/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),

解析函数

	def func(request, *args, **kwargs):
from django.urls import reverse url1 = reverse('i1') # asdfasdfasdf/
url2 = reverse('i2', args=(1,2,)) # yug/1/2/
url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/

当前URL

request.path_info

多级路由

项目目录

   project/urls.py
from django.conf.urls import url,include
from django.contrib import admin urlpatterns = [
url(r'^cmdb/', include("app01.urls")),
url(r'^monitor/', include("app02.urls")),
]

APP目录

	app01/urls.py
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^login/', views.login),
] app02/urls.py
from django.conf.urls import url,include
from django.contrib import admin
from app02 import views urlpatterns = [
url(r'^login/', views.login),
]

Python自动化之django URL的更多相关文章

  1. Python自动化之django orm之Q对象

    Python自动化之django orm之Q对象 什么是Q对象? Encapsulates filters as objects that can then be combined logically ...

  2. Python自动化开发 - Django【进阶篇】

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  3. Python自动化开发 - Django【基础篇】

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能 ...

  4. Python自动化开发 - Django基础

    本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其 ...

  5. Python自动化之django的ORM

    django ORM操作 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作 ...

  6. Python自动化之django的ORM操作——Python源码

    """ The main QuerySet implementation. This provides the public API for the ORM. " ...

  7. Python自动化之django视图

    视图 1.获取用户请求数据 request.GET request.POST request.FILES PS: GET:获取数据 POST:提交数据 request其他方法详解:http://dja ...

  8. Python自动化之Django的CSRF

    什么CSRF? CSRF, Cross Site Request Forgery, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果 某个用户已经登录到你的网站上了,那么当这个 ...

  9. Python自动化之django model验证(很弱,感觉应用场景不多)

    django model的数据验证 使用full_clean进行验证 obj = models.UserInfo(name="alex",email="tiantian& ...

随机推荐

  1. bzoj 3163: [Heoi2013]Eden的新背包问题

    Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...

  2. Jquery DIV滚动至浏览器顶部位置固定

    获取元素(这里定位元素A)距离顶部的高度,接着设定scroll滚动的事件,比如超过那个高度,把A的位置设定为fixed,小于该高度,修改回relative. 方法一: $(function() { v ...

  3. LeetCode-70-Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  4. 如何指定个别属性进行transition过渡

    transition是CSS3新增的动画属性,可以实现属性的平滑过渡,大大提高用户体验,对于多个属性进行过渡的话很多人会这样写 .tr{ transition:all 1s} 很不幸的是如果我只需要对 ...

  5. 【jQuery api】isFunction()

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  7. 【转】error LNK2019: 无法解析的外部符号 "__declspec(dllimport)

    生成DLL文件的字符集是Unicode而生成exe文件的字符集为默认的ASCII. 只要统一字符集即可解决问题: VS2005的c++项目默认字符集是使用 Unicode 字符集,在项目属性-> ...

  8. sublime text3下BracketHighlighter的配置方法

    st3的配置方法和st2是有区别的,所以网上搜索到的方法大多不能用,我google之后总结了一下. 一. 1.在st3中按preferences-->package settings--> ...

  9. 教你一招:根据身份证号计算出生年月和年龄 text函数和mid函数混用 datedif函数和today函数混用

    在电子表格Excel中,使用text函数和mid函数混用,根据身份证号计算出生年月: =text(mid(A2,,),"0!/00!/00") #0!/00!/00 为日期的格式# ...

  10. c# 文本框只能输入数字

    <input type="text" onKeyUp="value=value.replace(/\D/g,'')"  /> onKeyUp: 当输 ...