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配置,确保项目结构清晰且易于扩展。

相关推荐
vx-程序开发14 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
言乐615 小时前
Python关键词抓取目标网站
python·django·virtualenv·pygame·tornado
我的xiaodoujiao17 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django
我的xiaodoujiao18 小时前
Django 基础知识详细图文教程 10-Django 模板引擎 3
后端·python·测试工具·django
星光开发者1 天前
基于Spring Boot的充电桩管理系统的设计与实现-计算机毕设【课程设计】57105
vue.js·spring boot·vscode·mysql·django·php·express
计算机编程-吉哥1 天前
YOLO26 vs YOLO11 vs YOLOv8:深度学习咖啡果实成熟度分割系统【计算机毕业设计选题推荐】
人工智能·python·深度学习·yolo·django·毕业设计
troy1282 天前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
ikun_文2 天前
Django开启跨域请求
python·pycharm·django
高级程序源2 天前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计
后端·python·mysql·小程序·django·flask·课程设计
专业程序开发源2 天前
springboot篮球联赛管理系统13635-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计