博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

django 路由系统中name应用

Posted on 2018-09-21 16:43  alex_hrg  阅读(960)  评论(0编辑  收藏  举报

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

name的两大应用

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

一,浏览一论坛看到第十页,发现要登录才能查看内容,于是登录,但是登录成功后你得跳转到第十页啊。即跳回原网页

    模板语言调用:

      {% url "i1" %}  ==>  asdfasdfasdf/

      {% url "i1" %}2/3  ==>  asdfasdfasdf/2/3  跳到固定页面

    方法一:会把uri全带上

    <form action="{{ request.path_info }}" method="get">
        <input type="text" name="user"/>
        <input type="submit" value="提交" />
    </form>

二,某些特殊情况下,新增一篇博客,或是登录成功,得跳到指定页面,而不是当前页面。

   方法一:只会带上name的值,适合跳到固定页面

    <form action="{% url 'i1' %}" method="get">
        <input type="text" name="user"/>
        <input type="submit" value="提交" />
    </form>

 

reverse函数,将name反转换成url,目的也是跟上面一样

from django.urls import reverse

  url(r'^asdfasdfasdf/', views.index, name='i1'),

  v=reverse('i1')

 

  url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),

  v1 = reverse('i2',args=(1,2))

  

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

  v1 = reverse('i3',kwargs={'uid':3,'pid':'5',})