Django 路由设置

由于Django的升级,更新了很多方法,这里将持续更新此文。内容均为我个人有亲身使用过的感受,由于个人学习有限,如果有错误,那就凑合着看吧

看了下Django2.0 的文档,列出了三个特性

  • 1、更简单的URL路由语法 (Simplified URL routing syntax)

  • 2、admin应用的针对移动设备的优化改进(Mobile-friendly contrib.admin)

  • 3、支持SQL开窗表达式(Window expressions)

在使用中,配置urls.py 的时候,看了默认注释


The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.0/topics/http/urls/
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'))

很明显推荐使用了django.urls.path区别如下

url(r'^user/(?P[0-9]{3})/$', views.age),
path('user//', views.year),

这里我引用之前一个博主写的代码
Django 1.x内容

from django.conf.urls import url
def year_archive(request, year):
    year = int(year) # convert str to int
    # Get articles from database
def detail_view(request, article_id):
    pass
def edit_view(request, article_id):
    pass
def delete_view(request, article_id):
    pass
urlpatterns = [
    url('articles/(?P[0-9]{4})/', year_archive),
    url('article/(?P[a-zA-Z0-9]+)/detail/', detail_view),
    url('articles/(?P[a-zA-Z0-9]+)/edit/', edit_view),
    url('articles/(?P[a-zA-Z0-9]+)/delete/', delete_view),
]

Django 2.x内容

from . import views
urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles//', views.year_archive),
    path('articles///', views.month_archive),
    path('articles////', views.article_detail),
]

我这里记录下,path所用于的代数式,好吧,叫做转换器

- str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
- int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符
1.X 2.0 备注
- django.urls.path 新增,url的增强版
django.conf.urls.include django.urls.include 路径变更
django.conf.urls.url django.urls.re_path 异名同功能,url不会立即废弃

整个url的调用主要有4个步骤

  • url匹配
  • 正则捕获
  • 变量类型转化
  • 视图调用

新的path语法多用于以下场景:
1、类型自动转化
2、公用正则表达式

哈,谢谢各位了

你可能感兴趣的:(Django 路由设置)