Django基础之路由分发

目录

  • Django之路由层

    • 一、路由的作用
    • 二、简单的路由配置
    • 三、分组
    • 四、路由分发

Django之路由层

一、路由的作用

? 路由其实就是请求地址与视图函数的映射关系,如果把网站比喻为一本书,那么路由就好比是这本书的目录,在Django中路由默认配置在urls.py中。

二、简单的路由配置

# urls.py
from django.conf.urls import url

# urlpatterns(路由表):由一条条映射关系组成
urlpatterns = [
    url(regex, view, kwargs=None, name=None),  # ulr本质是一个函数
]

# regex: 正则表达式,用来匹配url地址的路径部分 例如:http://127.0.0.1:8000/index/匹配的部# 分为 index/
# view: 通常为一个视图函数,用来处理业务逻辑
# kwargs: 略(用法详见有名分组)
# name: 略(用法详见反向解析)

注意:

? 在配置文件settings.py中有一个参数APPEND_SLASH,该参数有两个值True或False。当APPEND_SLASH=True(如果配置文件中没有该配置, APPEND_SLASH的默认值为True),并且用户请求的url地址的路径部分不是以/结尾。那么当这个url匹配不到的时候,Django会在路径后面加上/再去路由表中匹配。

三、分组

? 分组主要是为了让后台获取url中的参数。Django中有两种分组方式,分别为:无名分组与有名分组。

3.1 无名分组

# urls.py
from django.conf.urls import url

urlpatterns = [
    # 下述正则表达式会匹配url地址的路径部分为:index/数字/,匹配成功的分组部分会以位置参数的形式传给视图函数,有几个分组就传几个位置参数(小括号内为参数的值)
    url(r'^index/(\d+)/$', views.index),
]

3.2 有名分组

# urls.py
from django.conf.urls import url

urlpatterns = [
    # 该正则会匹配url地址的路径部分为:article/数字/,匹配成功的分组部分会以关键字参数(article_id=匹配成功的数字)的形式传给视图函数,有几个又名分组就会传几个关键字参数
    url(r'^index/(?P<index_id>\d+)$', views.index),
]

总结:

? 有名分组和无名分组都是为了获取路径中的参数,并传递给视图函数,区别在于无名分是以位置参数的形式传递,有名分组是以关键字参数的形式传递。

注意:无名分组和有名分组不要混合使用!!!!!!

四、路由分发

未完待续......

原文地址:https://www.cnblogs.com/17vv/p/11688453.html

时间: 2024-12-10 06:51:30

Django基础之路由分发的相关文章

Django基础(路由、模版、视图)

Django 路由控制 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行 1.)简单的路由配置 1 from django.conf.urls import url 2 3 urlpatterns = [ 4 url(正则表达式, views视图函数,参数,别名), 5 ] 正则表达式:一个正则表达式字符串 views视图函数:一个可调用

Django 基础 之路由层

1.路由层简单配置 (1)path方法 写固定的url. (2)re_path方法 可以正则规则 例: urlpatterns = [ path('admin/', admin.site.urls), path('articles/2003/', views.special_case_2003), re_path(r'^articles/([0-9]{4})/$', views.year_archive), re_path(r'^articles/([0-9]{4})/([0-9]{2})/$'

Django基础之路由系统

Django路由系统分为一级路由和二级路由. 一级路由 静态路由 如下图中admin和home 动态路由 如下图中news,year_news,page(形参)和turbo(实参) 二级路由 1.在全局urls中的路由配置如下: 2.在第二个APP中设置路由如下: 在第二个APP中views如下: 请求结果分别如下: 原文地址:https://www.cnblogs.com/hanxiaobei/p/8322062.html

Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM

web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单的web框架: 因为我们不希望接触到TCP连接.HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务. 这个接口就是WSGI:Web Server Gateway Interface. #---------------------myweb.py-------

一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字段的删除过程中需不需要对数据进行备份 ''' 二.路由基础 ''' # url中含有四个参数 # url(regex, view, kwargs=None, name=None) # 正则路径 视图函数地址 默认关键字参数(了解) 路由别名 # r'index' 只要请求中含有index都可以匹配成

django之路由分发

路由分发决定哪一个路由由哪一个视图函数来处理. 注意:django2.0里的re_path和django1.0里的url除了名字不一样,其他都一样. 简单配置 from django.urls import path,re_path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('timer/',views.timer), # 路由配置: 决定哪一个路由由哪一个视图函数来处理 # rep

stark组件前戏(3)之django路由分发的本质include

django路由分发的三张方式 方式一: from django.urls import re_path, include urlpatterns = [ re_path(r'^web/', include('app01:urls')), ] include的返回值: return (urlconf_module, app_name, namespace) 方式二: # include函数主要返回有三个元素的一个元组. # app01/urls.py urlpatterns = [ re_pat

Django 路由分发

Django 路由分发 当一个url请求过来之后1.先到项目主目录下的urls内.2.由这个url做处理分发给其他app内的urls. 一级路由:主目录urls内引入include from django.conf.urls import url,include urlpatterns = [ # 指定分发的app目录名称 url(r'^cmdb/',include("app01.urls")), url(r'^monitor/',include("app02.urls&qu

django之路由分组,路由分发,FBV,CBV,ORM框架

django之路由分组,路由分发,FBV,CBV,ORM框架 今日的内容: a. 路由系统 1. 创建app 2. 路由的分组 3. 路由的分发 - 正则表达式匹配 b. django的orm(模型model) 1. 创建模型的步骤 2. orm基本的增删改查 3. 正向查询和反向查询 注意事项: 1. 前台传给后台一个列表时,后端如何接受: request.POST.getlist(字段名) 2. 前台传给后台一个列表时,需要在ajax请求中增加一个参数: traditional: true