【Django教程:[5]URLpattern的语法】在Django中,`urlpatterns` 是用于定义网站 URL 路由的核心部分。它通过将 URL 路径映射到对应的视图函数或类,实现网页请求的处理。本节将总结 `URLpattern` 的基本语法和使用方式。
一、URLpattern 基本结构
在 Django 中,`urlpatterns` 是一个列表,其中每个元素是一个 `path()` 或 `re_path()` 函数调用。它们的作用是将特定的 URL 路径与对应的视图函数关联起来。
1. `path()` 函数
`path()` 是推荐使用的函数,适用于简单的路径匹配,不支持正则表达式。
语法:
```python
path('路由路径/', 视图函数, name='别名')
```
- `'路由路径/'`:URL 路径字符串。
- `视图函数`:当用户访问该路径时,Django 将调用的函数。
- `name='别名'`:为该 URL 设置一个名称,方便在模板或其他地方引用。
2. `re_path()` 函数
`re_path()` 支持正则表达式,适用于更复杂的路径匹配。
语法:
```python
re_path(r'正则表达式/$', 视图函数, name='别名')
```
- `r'正则表达式/'`:使用正则表达式来匹配 URL。
- 其他参数与 `path()` 相同。
二、常见用法示例
示例 | 描述 |
`path('', views.index, name='index')` | 匹配根路径 `/`,调用 `views.index` 视图 |
`path('about/', views.about, name='about')` | 匹配 `/about/`,调用 `views.about` |
`path('article/ | 匹配 `/article/123/`,传递 `article_id=123` 参数 |
`re_path(r'^post/\d+/$', views.post_detail, name='post')` | 使用正则匹配 `/post/123/` 等路径 |
三、参数传递
在 `path()` 中可以使用转换器(如 `
转换器 | 类型 | 示例 |
` | 整数 | `/article/123/` → `var=123` |
` | 字符串 | `/user/john/` → `var='john'` |
` | UUID | `/profile/123e4567-e89b-12d3-a456-426614174000/` |
` | slug(类似字符串) | `/news-title/` |
四、命名空间与反向解析
为了防止 URL 名称冲突,Django 支持使用 命名空间 和 反向解析。
- 在 `urls.py` 中定义 `app_name = 'myapp'`。
- 在模板中使用 `{% url 'myapp:detail' %}` 进行反向解析。
五、总结
特性 | 说明 |
`path()` | 简单路径匹配,推荐使用 |
`re_path()` | 正则表达式匹配,适合复杂场景 |
参数捕获 | 使用 `<类型:变量名>` 捕获 URL 参数 |
反向解析 | 使用 `reverse()` 或模板标签进行 URL 反向查找 |
命名空间 | 防止 URL 冲突,提高代码可维护性 |
通过合理配置 `urlpatterns`,你可以灵活地管理网站的 URL 结构,使项目更加清晰和易于扩展。