荣誉墙项目day26 django 项目路由配置
2017-08-17 20:54 ZealouSnesS 阅读(249) 评论(0) 收藏 举报项目路由配置文件包括:配置目录里的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.xdef 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
浙公网安备 33010602011771号