django urlconf路由分发

news2024/10/11 15:12:04

在Django中,URLconf(URL configuration)是用来定义应用程序的URL路由规则的,主要用于将特定的URL请求映射到相应的视图函数。以下是关于Django中URL分发的详细介绍和代码示例。

URLconf的基本结构

  1. URL配置文件(urls.py)
    在项目的urls.py文件中定义URL模式,并将其指向视图函数。

    # project/urls.py
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/', include('blog.urls')),  # 引入 blog 应用的 URL 配置
    ]
    
  2. 应用的URL配置(app的urls.py)
    在应用程序中定义应用特定的URL模式。

    # blog/urls.py
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),  # 空路径,指向首页
        path('<int:post_id>/', views.detail, name='detail'),  # 动态路径,带参数
    ]
    

URL分发和路由匹配

  1. include()函数
    include() 用于引用其他应用的URL配置,这使得项目中的URL结构模块化。它可以帮助将不同应用的URL配置分离,使主项目的urls.py更加简洁。

    # 在主urls.py中 include其他应用的urls
    path('blog/', include('blog.urls'))
    
  2. 动态URL
    在URL模式中可以定义带参数的路径。例如,<int:post_id>/ 表示该路径带有一个整数类型的参数post_id,Django会将请求中的这个参数传递给对应的视图函数。

    # blog/urls.py
    path('<int:post_id>/', views.detail, name='detail')
    
  3. 命名URL模式
    使用name参数可以为URL模式命名,这样在视图或者模板中就可以通过名字引用特定的URL。这样做不仅使代码更具可读性,还便于后期维护。

    # blog/urls.py
    path('<int:post_id>/', views.detail, name='detail')
    
    # 在模板中使用 URL 的名字
    <a href="{% url 'detail' post_id=1 %}">查看文章</a>
    
  4. 正则表达式路由(Django 2.0之前)
    在Django 2.0之前,可以使用正则表达式定义URL模式,现在Django推荐使用路径转换器(如<int:>)。如果需要使用正则表达式,可以通过re_path()来定义。

    from django.urls import re_path
    
    urlpatterns = [
        re_path(r'^post/(?P<slug>[-\w]+)/$', views.detail, name='detail'),
    ]
    

URL配置的常见用法

  • 静态文件和媒体文件的路由配置
    在开发环境中,需要为静态文件和用户上传的媒体文件设置URL路由:

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
  • 为API设计的路由
    在API项目中,可以通过第三方库(如Django REST framework)的路由系统,简化视图函数的URL分发。

    from rest_framework import routers
    from . import views
    
    router = routers.DefaultRouter()
    router.register(r'users', views.UserViewSet)
    
    urlpatterns = [
        path('', include(router.urls)),
    ]
    

总结

Django的URLconf机制使得路由分发变得非常灵活,通过include()、动态URL、命名URL、以及使用正则表达式的方式,可以轻松地为项目中的不同应用、页面或者API定义路由。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线下餐厅自主点餐或外卖配送小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 线下餐厅自主点餐或外卖配送小程序源码系统是一款专为餐饮行业打造的智能化解决方案。它融合了自主点餐、外卖配送、订单管理、数据分析等多种功能&#xff0c;为餐厅提供了一站式的服务平台。通过该系统&#xff0c;餐厅可以实现线上线下一体化运营&#xff0c;提高工…

猿人学 — 第1届第3题(解题思路附源码)

猿人学 — 第1届第3题 翻页发现一共有两个请求 第一个请求&#xff1a;返回状态码为202&#xff08;服务器已经接收请求&#xff0c;但尚未处理&#xff09;&#xff0c;响应头中还有一个Set-Cookie 第二个请求&#xff1a;返回了我们想要的数据&#xff0c;携带的Payload中…

基于M芯片MAC系统的hadoop、zookeeper、hbase安装

hadoop、zookeeper、hbase安装 1. vmware配置 搜索&#xff1a;“vmware for mac”&#xff0c;购买正版并下载&#xff0c;或通过其他渠道下载均可 随机掉落的奇怪链接 2. 下载镜像并安装虚拟机 bug记录1 此处选用ubuntu的20以及24&#xff0c;分别出现无法加载安装程序、…

会话管理:深入理解SQLAlchemy会话及其事务处理

引言 SQLAlchemy是一个流行的Python SQL工具包和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;它提供了一个高层的ORM以及底层的SQL表达式语言。在SQLAlchemy中&#xff0c;会话&#xff08;Session&#xff09;是与数据库交互的核心概念&#xff0c;它不仅负责对…

外卖配送小程序源码系统 带源代码包以及搭建部署教程

系统概述 外卖配送小程序源码系统是一套完整的解决方案&#xff0c;旨在帮助用户快速搭建自己的外卖配送平台。它融合了先进的技术和创新的设计理念&#xff0c;为用户提供了一个稳定、高效、易用的系统环境。 该系统基于移动端开发&#xff0c;能够与各种操作系统兼容&#…

2.stm32 GPIO输出

GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …

网络变压器的作用是什么

在网络通讯主板上,在PHY芯片与RJ45连接器之间,会有一个黑属的小方块,这个东西就叫网络变压器,书名"数据录”人们常把它称为网络隔真变压务,LAN变压客,局域网变压器,滤波器等。 它在一块网络设备接口上所起的作用主要有两个; 一、传输数据,它把PHY送出来的差分信号用差模合…

电子元器件是电子电路中的基本组成部分

电子元器件是电子电路中的基本组成部分&#xff0c;主要包括以下几类&#xff1a; 一、电阻器 作用 限流&#xff1a;限制电路中的电流大小。分压&#xff1a;将电压按照一定比例分配。负载&#xff1a;作为电路中的负载元件。 分类 固定电阻&#xff1a;阻值固定不变。可变电阻…

ros1编译wpr_simulation库

目录 安装项目依赖包编译将环境参数加载到终端程序中运行编译好的ros程序 首先你下载好这个库以后。 安装项目依赖包 scripts库中&#xff0c;存放的是一些依赖项安装脚本以及python脚本。 进入到这个路径的终端。 输入 ./install_for_noetic.sh编译 输入下面命令&#xf…

小猿口算自动PK脚本

大家好&#xff0c;我是小黄。 近期&#xff0c;众多大学生炸鱼小猿口算APP,把一众小学生都快虐哭了&#xff0c;小黄听闻后&#xff0c;也跃跃欲试。对此小黄也参考网上的资料写了一个自动Pk的脚步。 首先大家需要安装一个pytorch环境过程中&#xff0c;如果小伙伴对此不熟悉的…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档&#xff1a;https://docs.ultralytics.com/models/yolo11/ 代码链接&#xff1a;https://github.com/ultralytics/ult…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现&#xff1a;1.1.1 参数传递&#xff1a;1.1.2 增&#xff08;Insert&#xff09;&#xff1a;1.1.3 删&#xff08;Delete&#xff09;&#xff1a;1.1.4 改&#xff08;Update&#xff09;&#xff1a;1.1.5 查&#xff08;Select&#xff…

大疆M2006+C610 pid参数调优

官方给的示例代码里给的是1.5, 0.1, 0 但试了下空转时显然不太行. 自己摸索出0.8, 0.03, 0 表现如图中的蓝色线 期望速度先两秒的1000,然后一秒的2000,一秒的3000, 0 2000 表现还不错,可以看到0.5秒后与期望值的差距控制在大概10%之内,但还是感觉有些过调 对了先说一下基础知识…

UnityComputeShader Challenge2

UnityComputeShader Challenge2 大部分内容与Challenge1中的一致&#xff0c;重复的地方不做说明 using UnityEngine; using System.Collections;public class Challenge2 : MonoBehaviour {public ComputeShader shader;//纹理的分辨率&#xff0c;正方形public int texReso…

PHP拼团接龙商城系统小程序源码

拼团接龙商城系统&#xff0c;解锁购物新乐趣&#xff01; &#x1f389; 拼团接龙&#xff0c;购物也能玩出新花样 你是否厌倦了单调的购物方式&#xff1f;想要尝试一种既有趣又实惠的购物新体验&#xff1f;那么&#xff0c;“拼团接龙商城系统”绝对是你的不二之选&#…

fluke双绞线测试-外部串扰AxTALK-测试DEMO样本

外部串扰是电缆束或跳线中相邻电缆之间传输的噪音或串扰。外部串扰是 10GBASE-T 通信应用中主要的噪音源。 电缆线对&#xff08;NEXT 和 FEXT&#xff09;之间的串扰信号与传输信号有关&#xff0c;所以网络设备可以利用数字信号处理 (DSP) 技术除去数据信号中的串扰信号。但…

力扣题11~20

题11&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 这种题目第一眼就是双循环&#xff0c;但是肯定不行滴&#xff0c;o(n^2)这种肯定超时&#xff0c;很难接受。 所以要另辟蹊径&#xff0c;我们先用俩指针&#xff08;标志位&#xff09;在最左端和最右端&am…

Android iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

作者&#xff1a;元泊 引言 背景信息 随着移动互联网技术的持续演进与全民互联网时代的深入&#xff0c;用户在 Android、iOS 应用程序、小程序、H5 游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验&#xff08;UX&#xff09;场景的复杂性&#xff0c…