Django项目中创建多个App并配置URL路由的完整指南
本文详细讲解如何在Django项目中创建并管理多个App。内容涵盖通过命令行创建新App、在子目录中组织代码以保持项目整洁、配置settings.py添加应用路径,以及在主urls.py中正确引入子应用路由。通过具体代码示例,展示如何从创建app2到编写views.py,最终实现前端页面通过href调用指定URL的完整流程。
创建第二个App及基础配置
1、创建第二个app
假设我们的Django项目P中已经存在一个默认生成的app,名为app1。现在,我们需要在此基础上创建第二个app,将其命名为app2。
打开PyCharm集成开发环境下方的Terminal(终端)窗口,执行以下命令来生成新的app:
python manage.py startapp app2
此外,为了便于区分不同app的路由规则,建议在每个app目录下单独建立一个urls.py文件。
在PyCharm中,右键点击目标app文件夹,选择“New”(新建),然后选择“Python File”(Python文件),将文件名命名为urls,点击确定即可完成创建。
2、设置url.py
(1)配置项目根目录下的P\urls.py文件
我们需要在根目录的urls.py中引入app2的路由模块,并添加对应的路径引导。具体实现代码如下:
from app2 import urls as app2_urls
urlpatterns = [
path('app2/',include(app2_urls)), # 将所有以app2开头的urls,都交给app2(app名)下的urls.py处理
]
(2)配置app2目录下的urls.py文件
from django.urls import path
from app2 import views
urlpatterns = [
path('index/', views.index),
]
3、编写app2下的views.py
from django.shortcuts import render,HttpResponse
# Create your views here.
# 绑定博客
def index(request):
return HttpResponse(111)
4、HTML页面如何调用URL
在HTML模板中,通常通过href属性或src属性来引用URL,写法示例如下:
href="/app2/index/" rel="external nofollow"
完成上述配置后,即可正常访问。
优化Django多App项目结构
内容扩展:
Django项目下创建多个app
本示例基于Django 2.0版本构建的项目环境。
以往在项目中建立app通常只创建一个,但近期因业务需求,需要在单个Django项目下管理多个app。最简单的方法是将所有app直接放置在与manage.py文件同级的目录下,但这会导致项目根目录下的文件夹数量激增,显得臃肿不堪,对于追求代码结构整洁的开发者来说,这种目录结构令人难以接受。
因此,我采用将多个app集中放置于同一个子文件夹内的方式来优化项目结构。
myDjango
├───.idea
│ └───inspectionProfiles
├───Apps
│ ├───app01
│ │ ├───migrations
│ │ │ └───__pycache__
│ │ └───__pycache__
│ └───app02
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
├───myDjango
│ └───__pycache__
└───templates
├───app01
└───app02
以项目名称myDjango为例,我将所有创建的app统一放置在Apps文件夹内。这种做法使得整个项目的目录结构看起来更加清爽。对于模板文件(templates),也采取了类似的做法,将不同应用的模板分别存放在各自的子目录下。为了使URL路径看起来更加清晰合理,我在每个应用中额外添加了一个urls.py文件,以便在项目根目录的urls.py中进行统一引用。
完成目录结构调整后,需要在myDjango目录下的settings.py文件中进行相应配置,添加以下代码以指定app的搜索路径:
sys.path.insert(0, os.path.join(BASE_DIR, 'Apps'))
配置完成后,还需要在myDjango目录下的urls.py文件中添加对应的路径映射,以便路由能够正确分发请求。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app02/', include("Apps.app02.urls")),
path('app01', include("Apps.app01.urls")),
]
至此,基本完成在一个Django项目中设置多个app的所有步骤。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













