当前位置: 首页 > news >正文

Django学习笔记四:urls配置详解

Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。URL配置是Django框架中非常重要的一部分,它定义了URL模式与视图函数之间的映射关系。以下是Django URL配置的详解:

URL配置文件

通常,URL配置位于Django项目的urls.py文件中。

urlpatterns列表

urls.py文件中,你会看到一个urlpatterns列表,它包含了一系列的URL模式。

URL模式

每个URL模式都是一个元组,通常包括以下部分:

  1. URL模式字符串:定义了URL的模式,可以使用普通字符、转换器(如<int:id>表示一个整数参数)和正则表达式。
  2. 视图函数:当URL匹配时,Django会调用这个视图函数。
  3. 可选的命名空间:用于reverse函数和模板标签url

基本语法

from django.urls import path, re_path
from . import viewsurlpatterns = [path('articles/2003/', views.special_case, name='special-case'),path('articles/<int:year>/', views.year_archive, name='year-archive'),path('articles/<int:year>/<int:month>/', views.month_archive, name='month-archive'),path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail, name='article-detail'),
]

path()函数

path()函数用于定义简单的URL模式,它使用路径转换器来捕获参数。

re_path()函数

re_path()函数允许你使用正则表达式来定义更复杂的URL模式。

包含其他URL配置

你可以使用include()函数来包含其他应用的URL配置,这在大型项目中非常有用。

from django.urls import include, pathurlpatterns = [path('blog/', include('blog.urls')),
]

命名URL

通过给URL模式指定一个name参数,你可以在Django的模板和视图中使用reverse函数来动态地构建URL。

使用正则表达式

如果你需要更复杂的URL模式,可以使用正则表达式:

from django.urls import re_path
from . import viewsurlpatterns = [re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]

应用命名空间

当你使用include()函数包含其他URL配置时,可以指定一个命名空间,这样你就可以在项目的任何地方使用reverse函数来引用这些URL。

from django.urls import include, pathurlpatterns = [path('blog/', include(('blog.urls', 'blog'), namespace='blog')),
]

反向解析URL

使用reverse()函数可以根据URL的名称和参数来构建URL:

from django.urls import reverseurl = reverse('blog:article-detail', args=[2003, 'may'])

URL转换器

Django提供了一些内置的URL转换器,例如:

  • str:捕获一个字符串参数。
  • int:捕获一个整数参数。
  • slug:捕获一个slug(通常用于文章标题)。

注意事项

  • URL模式是从上到下匹配的,所以通常将更具体的模式放在前面。
  • URL模式是大小写敏感的。

通过这些基本的组件,你可以构建出强大而灵活的URL配置,以满足你的Web应用需求。

http://www.lryc.cn/news/454330.html

相关文章:

  • NIO的callback调用方式
  • 百度文心智能体平台开发萌猫科研加油喵
  • Hive数仓操作(十六)
  • 第十二届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(第一套)
  • MongoDB入门:安装及环境变量配置
  • 利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)
  • RCE(remote command/code execute)远程命令注入
  • ​一篇关于密码学的概念性文章
  • 什么是汽车中的SDK?
  • 利用CRITIC客观权重赋权法进行数值评分计算——算法过程
  • 一个月学会Java 第4天 运算符和数据转换
  • Stream流的终结方法(一)
  • GO网络编程(二):客户端与服务端通信【重要】
  • 快速熟悉Nginx
  • VikParuchuri/marker 学习简单总结
  • 【AI知识点】词嵌入(Word Embedding)
  • Python从入门到高手5.1节-Python简单数据类型
  • Hbase要点简记
  • RabbitMQ的各类工作模式介绍
  • 李宏毅深度学习-图神经网络GNN
  • Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)
  • python交互式命令时如何清除
  • Token,Cookie,Session,JWT详解
  • opencv-rust 系列: 1, 安装及运行自带示例和测试程序
  • Linux系统编程(一):Linux平台上静态库和动态库的制作与使用
  • Nginx的基础讲解之重写conf文件
  • RIFE: Real-Time Intermediate Flow Estimation for Video Frame Interpolation
  • rabbitMq-----broker服务器
  • MAC备忘录空白解决方案
  • cnn突破七(四层bpnet网络公式与卷积核bpnet公式相关)