首页 > 其他 > 详细

03django路由层

时间:2020-07-02 10:02:30      阅读:69      评论:0      收藏:0      [点我收藏+]

  django自带了一套URL和view的映射关系,我们只需要配置相对于的URL和view的指向,就可以将目标view指向客户端的URL。

  urls 基本配置:

  下面是urls的例子,可以通过以下方式绑定view。

  • views.home
  • home.as_view()
  • include()
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path(‘‘, views.home, name=home)
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path(‘‘, Home.as_view(), name=home)
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path(blog/, include(blog.urls))

  

  URL的基本写法:

from django.urls import path

from . import views

urlpatterns = [
    path(articles/2003/, views.special_case_2003),
    path(articles/<int:year>/, views.year_archive),
    path(articles/<int:year>/<int:month>/, views.month_archive),
    path(articles/<int:year>/<int:month>/<slug:slug>/, views.article_detail),
]

 

  正则URLs的写法:

from django.urls import path, re_path

from . import views

urlpatterns = [
  
  #有名分组
re_path(r^articles/(?P<year>[0-9]{4})/$, views.year_archive), re_path(r^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$, views.month_archive), re_path(r^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$, views.article_detail),
]

  

  有名分组和无名分组:

from django.urls import path,re_path

from app01 import views

urlpatterns = [
   # 有名分组
    re_path(r^articles/(?P<year>[0-9]{4})/$, views.year_archive),
    re_path(r^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$, views.month_archive),
    re_path(r^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$, views.article_detail),
  #无名分组
  re_path(r^articles/([0-9]{4})/$, views.year_archive),
  re_path(r^articles/([0-9]{4})/([0-9]{2})/$, views.month_archive),
  re_path(r^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$, views.article_detail),

 

]

    路径转换器:

  下面的路径转换器在默认情况下是有效的:

  • str - 匹配除了 ‘/‘ 之外的非空字符串。如果表达式内不包含转换器,则会默认匹配字符串。
  • int - 匹配0或任何正整数。返回一个 int 。
  • slug - 匹配任意由 ASCII 字母或数字以及连字符和下划线组成的短标签。比如,building-your-1st-django-site 。
  • uuid - 匹配一个格式化的 UUID 。为了防止多个 URL 映射到同一个页面,必须包含破折号并且字符都为小写。比如,075194d3-6885-417e-a8a8-6c931e272f00。返回一个 UUID 实例。
  • path - 匹配非空字段,包括路径分隔符 ‘/‘ 。它允许你匹配完整的 URL 路径而不是像 str 那样只匹配 URL 的一部分。

  

  反向解析和命名空间

#定义别名
 path(‘‘, views.index, name="index"),

#空间命名
re_path(r^app01/, include("app01.urls",namespace="app01")),
re_path(r^app02/, include("app02.urls",namespace="app02")),

#反向解析
from django.urls import reverse return HttpResponse(reverse(index))

 

03django路由层

原文:https://www.cnblogs.com/slzhao/p/13222621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!