Django里面,多个APP的url怎么设置

在Django中,多个APP的URL设置主要通过以下两种方式实现:

1. ‌独立URL文件分发(推荐)‌

步骤‌:

1、在每个APP目录下创建独立的urls.py文件(如app01/urls.py、app02/urls.py)。

python 复制代码
# app01/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),  # 根路径对应index视图
    path('student/', views.student),  # 子路径对应student视图
]

2、在项目根目录的urls.py中通过include()包含这些APP的URL配置:

python 复制代码
# 项目根目录 urls.py
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app1/', include('app01.urls')),  # 包含app01的URL
    path('app2/', include('app02.urls')),  # 包含app02的URL
]

优点‌:逻辑清晰,便于维护;支持命名空间(如app_name='app01')。
2. ‌集中配置在项目根目录‌

步骤‌:

直接在项目根目录的urls.py中定义所有APP的路由:

python 复制代码
# 项目根目录 urls.py
from django.urls import path
from app01 import views as app01_views
from app02 import views as app02_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app1/', app01_views.index),  # 直接映射视图
    path('app2/', app02_views.index),
]

缺点‌:当APP数量增加时,配置文件会变得冗长且难以管理。
关键注意事项:

命名空间‌:使用app_name为每个APP的URL分组(如app_name='app01'),避免路由冲突。

路径分发‌:通过include()将子路径分发到对应APP的urls.py,如path('app1/', include('app01.urls'))。

版本兼容性‌:Django 2.x/3.x推荐使用path()和re_path()代替旧版的url()。

示例代码

python 复制代码
# 项目根目录 urls.py
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app1/', include('app01.urls', namespace='app1')),  # 命名空间
    path('app2/', include('app02.urls', namespace='app2')),
]

# app01/urls.py
from django.urls import path
from . import views

app_name = 'app01'  # 命名空间
urlpatterns = [
    path('', views.index, name='index'),  # 命名路由
    path('student/', views.student, name='student'),
]

通过上述方式,可高效管理多个APP的URL配置,确保项目结构清晰且易于扩展。

相关推荐
呱呱复呱呱8 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
码云骑士14 天前
31-慢查询排查全流程(上)-Django-Debug-Toolbar与EXPLAIN入门
后端·python·django
龙腾AI白云14 天前
数字孪生和世界模型,二者的技术边界正在慢慢融合吗?
人工智能·django·知识图谱
码云骑士14 天前
30-在线图书管理系统-Django从零搭建到上线部署完整实战
后端·python·django
2601_9618752415 天前
花生十三资源盘|电子版|全科
python·django·flask·virtualenv·scikit-learn·pygame·tornado
码云骑士15 天前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
码云骑士15 天前
23-Django-ORM的N+1问题-select_related与prefetch_related详解
后端·python·django
摸摸芋15 天前
Django框架(1)
后端·python·django
码云骑士15 天前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django
杰杰79815 天前
DRF的分页讲解-入门篇 三个基础分页类介绍
python·django