荣誉墙项目day26 django 项目路由配置

项目路由配置文件包括:配置目录里的urls.py文件各个app目录里的urls.py文件

1、include()——从项目主路由分配到各APP主路由

from django.conf.urls import include,url

urlpatterns = [

  url(r'^home_student', include('home_student.urls')),

]

2、url的name属性——解耦

(1)name属性定义:urls.py文件的urlpatterns中

url(r'^add/(d+)/(d+)/$', calc_views.add2, name='add2'),

(2)name属性在.py文件中的使用:

python manage.py shell

>>> from django.core.urlresolvers import reverse  # django 1.4.x - django 1.10.x

>>> from django.urls import reverse  # django 1.10.x 新的,更加规范了
 #reserve函数用于从name获取url:reverse(url的name, args=(url所需的参数))
>>> reverse('add2', args=(4,5))
u'/add/4/5/'
>>> reverse('add2', args=(444,555))
u'/add/444/555/'
 
(3)name属性在.html文件中替代url
不带参数的:
{% url 'name' %}
带参数的:参数可以是变量名
{% url 'name' 参数 %}
 
例如:
<a href="{% url 'add2' 4 5 %}">link</a>
 

示例!!!比如用户收藏夹中收藏的URL是旧的,如何让以前的 /add/3/4/自动跳转到现在新的网址呢?

要知道Django不会帮你做这个,这个需要自己来写一个跳转方法

具体思路是,

在 views.py 写一个跳转的函数

from django.http import HttpResponseRedirect

from django.core.urlresolvers import reverse  # django 1.4.x - django 1.10.x
#  from django.urls import reverse  # new in django 1.10.x
 
def old_add2_redirect(request, a, b):
    return HttpResponseRedirect(
        reverse('add2', args=(a, b))
    )
然后将原来的url指向这个跳转函数,而跳转函数跳转到新url
 url(r'^add/(d+)/(d+)/$', calc_views.old_add2_redirect),
 url(r'^new_add/(d+)/(d+)/$', calc_views.add2, name='add2'),
 
 3、在html文件或者view文件中调用url的方法:
项目主页为:
<a href="./">首页</a>
 其他页面依此类推
参考:http://code.ziqiangxuetang.com/django
原文地址:https://www.cnblogs.com/zealousness/p/7384321.html