zoukankan      html  css  js  c++  java
  • 荣誉墙项目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
  • 相关阅读:
    所有蚂蚁掉下来前的最后一刻
    最长有效括号
    n的第k个因子--leetcode1492
    删掉一个元素以后全为1的最长子数组。
    public class和class的区别
    数据库中的乐观锁和悲观锁以及实现方式
    HashMap底层实现原理 扩容机制
    jvm 内存泄漏现象和处理方案
    Django模板标签语法
    Django图片的上传与下载
  • 原文地址:https://www.cnblogs.com/zealousness/p/7384321.html
Copyright © 2011-2022 走看看