zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU-5534-Partial Tree
    Dire Wolf HDU
    HDU 5119 Happy Matt Friends (14北京区域赛 类背包dp)
    4 Values whose Sum is 0 POJ
    Fliptile POJ
    Face The Right Way POJ
    【Selenium学习】解决chromedriver.exe' executable needs to be in PATH
    【Jenkins学习】修改jenkins显示为中文语言
    【Jenkins学习】Jenkins 批量删除历史构建
    【Tomcat学习】tomcat 日志详解
  • 原文地址:https://www.cnblogs.com/si-jie/p/5846417.html
Copyright © 2011-2022 走看看