Django 路由设置

作者: 复仇天神 | 来源:发表于2018-03-10 22:34 被阅读0次

由于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<age>[0-9]{3})/$', views.age),
path('user/<age>/', 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<year>[0-9]{4})/', year_archive),
    url('article/(?P<article_id>[a-zA-Z0-9]+)/detail/', detail_view),
    url('articles/(?P<article_id>[a-zA-Z0-9]+)/edit/', edit_view),
    url('articles/(?P<article_id>[a-zA-Z0-9]+)/delete/', delete_view),
]

Django 2.x内容

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>/', 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 路由设置

    由于Django的升级,更新了很多方法,这里将持续更新此文。内容均为我个人有亲身使用过的感受,由于个人学习有限,如...

  • django框架进阶

    @[toc] Django的URL路由机制 Django的URL路由配置 路由是关联URL及其处理函数关系的过程 ...

  • Django 三

    目录 1.Django虚拟环境安装 2.Django路由配置主页与404 3.Django2.x路由分发 4.Dj...

  • django路由url.py详解_Django学习笔记(四)-p

    django路由url.py详解_Django学习笔记(四)-python3 url路由方式: 1. patter...

  • ThinkPHP基础-----第五章(路由相关)第二部分

    开启路由设置:设置路由:

  • Django-04 View

    Django中视图的功能主要是处理用户操作,操作数据和返回数据给用户。 0 start 0.1 设置路由 hell...

  • RESTful API实现

    基于Django实现RESTful API 路由 视图 结果 基于Django REST Framework框架实...

  • 4.Django路由系统

    Django路由系统 URL调度器Django 允许自由地设计你的URL,不受框架束缚。Django认为,对于高质...

  • Django路由说明

    1. 路由定义位置 Django的主要路由信息定义在工程同名目录下的urls.py文件中,该文件是Django解析...

  • Vue.js路由

    1.设置路由 ① 路由map 在main.js中导入vue-router 设置全局路由 实例化router ②路由...

网友评论

    本文标题:Django 路由设置

    本文链接:https://www.haomeiwen.com/subject/pxsyfftx.html