zoukankan      html  css  js  c++  java
  • Django url路由分配

    在项目文件中,urls.py文件目的是匹配用户请求的url来执行对应的函数,格式如下:

    urlpatterns = [
        url('admin/', admin.site.urls),
        url('^index/$', views.index,), 
        url('^news/$', views.news),
        url('^download/$', views.download),
    ]

    一般的分配只需要两个参数,路径和对应执行的函数,其他两个参数可以不加。

    url()的四个参数

    第一个参数:

    路径字符串,使用正则匹配,常见于分页和文章页面。例:匹配4个数字   url(r'^index/[0-9]{4}/$', views.index)   当给匹配项添加()后url(r'^index/([0-9]{4})/$', views.index) ,会将该匹配项当做参数传到views对应函数中,应为def index(req, num):(参数名无限制,多个参数时按顺序传参)。也可以设置为有名参数,例:url(r'^index/(?P<name>[0-9]{4})/$', views.index)  这样的话,views函数里边的形参只能是制定的名字 def index(req, name):。

    第二个参数:

    匹配到之后需要执行的函数,固定格式。

    第三个参数:

    用处不大,详见http://www.cnblogs.com/yuanchenqi/articles/6083427.html

    第四个参数:

    别名。顾名思义,在前端使用form表单验证时,需要两个参数,action和method,其中action是表单数据提交到的路径是哪里,一般情况下action="/index/",但是此情况有弊端,缺少解耦,后端修改后前端也需要修改,所以别名用处就在于此。固定格式为:name="home",前端格式为:action={% url "home" %}。如果action="",默认将POST提交的数据给当前路径。

     app路由应用

    项目较大时,可能有许多路由映射,不符合解耦规范,此时,在每个app中创建urls.py,在全局urls.py 配置一下即可,如下:

    项目urls.py
    
    from django.contrib import adminfrom django.conf.urls import url
    from django.urls import include
    
    urlpatterns = [
        url('admin/', admin.site.urls),
        url('^blog/', include('mysite.urls')), 
    ]
    app下的urls
    
    from mysite import views
    from django.conf.urls import url
    
    urlpatterns = [
        url(r'news/$', views.index, name="home"),  
    ]

    本文参见:http://www.cnblogs.com/yuanchenqi/articles/6083427.html 

  • 相关阅读:
    C# 文件类的操作---删除
    C#实现Zip压缩解压实例
    UVALIVE 2431 Binary Stirling Numbers
    UVA 10570 meeting with aliens
    UVA 306 Cipher
    UVA 10994 Simple Addition
    UVA 696 How Many Knights
    UVA 10205 Stack 'em Up
    UVA 11125 Arrange Some Marbles
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/linpei/p/10751477.html
Copyright © 2011-2022 走看看