• Django的路由层


    一 简单的路由配置

    from django.conf.urls import url
    
    from app import views
    
    urlpatterns = [
       path('/',views.index)   
    ]

    二 有名分组

    先欠着

    三 分发

    from django.conf.urls import include, url
    
    urlpatterns = [
       url(r'^admin/', admin.site.urls),
       url(r'^blog/', include('blog.urls')),  #include 就是分发
    ]

    四 反向解析

    反向代理的作用是 当有一个需求或多个需求导致URL的改变,也就是修改原来URL,以获取新的URL最终形式,以用于切入到生成的内容中,人们不希望一个个的去修改这些URL(就是硬编码URL)。

    因此 在需要URL的地方,对于不同层级,Django提供不同的工具用于URL反查,反向解析有两种方式:

    1 在模板中:使用URL模板标签

    2 在Python中:使用django.core.urlresolvers.reverse()函数

    urls.py

    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
       
        url('/index', views.index, name='indexs'),
        
    ]

    方式一:python的视图函数中(使用reverse反向解析):

    from django.core.urlresolvers import reverse  #reverse就是反向解析
    from django.http import HttpResponseRedirect
    
    def redirect_to_year(request):
        # ...
        year = 2006
        # ...
        return HttpResponseRedirect(reverse('indexs', args=(year,))
    
    
       ## 同redirect("/index")

    方式二:在模板中使用(使用url):

    <a href="{% url 'indexs' 2012 %}">2012 Archive</a>
    
    <ul>
    {% for yearvar in year_list %}
    <li><a href="{% url 'indexs' yearvar %}">{{ yearvar }} Archive</a></li>
    {% endfor %}
    </ul>
    
    
    
    #在模板中 url 就是反向解析

    注意;当命名你的URL 模式时,请确保使用的名称不会与其它应用中名称冲突。如果你的URL 模式叫做comment,而另外一个应用中也有一个同样的名称,当你在模板中使用这个名称的时候不能保证将插入哪个URL。在URL 名称中加上一个前缀,比如应用的名称,将减少冲突的可能。

    五 名称空间

    命名空间是表示标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。

    project的urls.py

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^app01/', include("app01.urls",namespace="app01")),
        url(r'^app02/', include("app02.urls",namespace="app02")),
    ]
    
    
    
    #namespace 就是名称空间

    app01.urls:

    urlpatterns = [
        url(r'^index/', index,name="index"),
    ]

    app02.urls:

    urlpatterns = [
        url(r'^index/', index,name="index"),
    ]

    app01.views

    from django.core.urlresolvers import reverse
    
    def index(request):
    
        return  HttpResponse(reverse("app01:index"))

    app02.views

    from django.core.urlresolvers import reverse
    
    def index(request):
    
        return  HttpResponse(reverse("app02:index"))
  • 相关阅读:
    android apk 防止反编译技术第四篇-对抗JD-GUI
    程序猿的健康之路
    webkit浏览器常见开发问题
    解密H264、AAC硬件解码的关键扩展数据处理
    HTTPS与证书
    【微软大法好】VS Tools for AI全攻略(3):低配置虚拟机也能玩转深度学习,无需NC/NV系列
    【微软大法好】VS Tools for AI全攻略(2)
    【微软大法好】VS Tools for AI全攻略
    【写论文历程】这几天的一个小总结
    不得不承认pretty-midi很好用,以及一些简单的上手
  • 原文地址:https://www.cnblogs.com/mlhz/p/10289742.html
Copyright © 2020-2023  润新知