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

相关推荐
秋氘渔4 小时前
Django DRF + SimpleJWT 实战 (一):基于纯自定义 Model 的 Token 鉴权与踩坑指南
django·前后端分离·simplejwt·drf·token鉴权
二等饼干~za8986681 天前
碰一碰发视频系统源码开发搭建--技术分享
java·运维·服务器·重构·django·php·音视频
高洁011 天前
基于Tensorflow库的RNN模型预测实战
人工智能·python·算法·机器学习·django
luoluoal2 天前
基于python的RSA算法的数字签名生成软件(源码+文档)
python·mysql·django·毕业设计
牢七3 天前
5655869
django
秋氘渔4 天前
智演沙盘 —— 基于大模型的智能面试评估系统
python·mysql·django·drf
jcsx5 天前
如何将django项目发布为https
python·https·django
百锦再5 天前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
Warren985 天前
datagrip新建oracle连接教程
数据库·windows·云原生·oracle·容器·kubernetes·django