zoukankan      html  css  js  c++  java
  • Django基于正则表达式的URL(2)

    1. 关于正则的说明

    url(r'^detail-(d+)-(d+).html',views.detail), 当客户端输入 127.0.0.1:8000/detail-2-9.html时,Django默认可以得到3个参数,分别是request,

    -(d+)-,-(d+)-。 所以定义detail函数的时候,需要把这3个参数都接收,否则会报错。当然了是严格按照顺序来写/获取到的。

    def detail(request,nid,uid):

      print(nid,uid)

    2.默认情况下是严格按照顺序来获取得。但是如果想调整形式参数的时候,就会影响到整个程序。基于此,Django还支持正则表达式的分组。

    把第1个匹配的赋值给nid,把第2个匹配的赋值给uid.

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

    分组写的好处是,下列2个函数就无区别了。形式参数的位置不会影响代码的值。

    def detail(request,nid,uid)

    def detail(request,uid,nid)

    3. args:接收的是元组

       kwargs:接收的是字典类型的。

    4.本节笔记

    一,路由系统,URL
    	1.一个URL对应一个函数或者对应一个类
    	url(r'^index/',views.index),url(r'^home/',views.Home.as_view()),
    	2.一类URL对应一个函数或类
    	url(r'^detail-(d+)-(d+).html',views.index), 严格按照形式参数的位置给它传递的。
    	3.一类URL对应一个函数或类(用正则表达式的方法来做)推荐使用的。
    	url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html',views.index), 形式参数的位置不影响值。
    	传递参数的时候,是按照nid=1,uid=9,的样式传递的。
    	
    	def detail(request,*args,**kwargs) #args元组,kwargs字典。
    	如果是以url(r'^detail-(d+)-(d+).html',views.index)的形式传递的话,则都传到args里面了。因为传递形式是:1,2的格式。
    	如果是以url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html',views.index)的形式的话,都传到kwargs里。因为传递形式是:nid=1,uid=2的格式
    

     

  • 相关阅读:
    angularJS DOM element() $compile()
    windows下python虚拟环境vitrualenv与virtualenvwrapper安装
    django安装 _ django-admin命令_启动服务器命令_创建应用
    Windows下安装phpRedis扩展
    php获取api接口数据的方法
    PHP生成xml数据-XML方式封装接口数据方法
    PHP封装通信接口数据方法-生成json与通信数据标准格式
    PHP之Memcache缓存详解
    jQuery的$.getJSON方法在IE浏览器下失效的解决方案
    好用的日期插件(只需引用即可)
  • 原文地址:https://www.cnblogs.com/momo8238/p/7513767.html
Copyright © 2011-2022 走看看