Django中链接应用:urls.py与app.py哪个更优?
Django中两种"关联应用"方式的区别与用法
1. 通过urls.py链接应用(路由分发)
这是Django路由层面的标准操作,核心目的是拆分不同应用的URL规则,避免根urls.py过于臃肿,让路由管理更清晰。
具体做法:
- 给每个app单独创建
urls.py,编写该应用专属的路由规则,比如:# myapp/urls.py from django.urls import path from . import views urlpatterns = [ path('detail/', views.item_detail, name='item-detail'), ] - 在项目根目录的
urls.py中,用include()将app的路由挂载到指定路径下:# project/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('goods/', include('myapp.urls')), # 访问/goods/detail/就会触发myapp的对应视图 ]
2. 在app.py中使用config函数(应用注册配置)
这是应用注册层面的操作,和路由链接无关,主要用来给应用添加自定义配置,比如修改后台显示名称、执行应用初始化逻辑等。
具体做法:
- 在app的
app.py中自定义AppConfig子类:# myapp/app.py from django.apps import AppConfig class MyAppConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'myapp' verbose_name = '商品管理应用' # 后台显示的友好名称 - 在项目
settings.py的INSTALLED_APPS里,用这个配置类注册应用:# project/settings.py INSTALLED_APPS = [ 'django.contrib.admin', ... 'myapp.apps.MyAppConfig', # 用配置类注册 # 替代简单的'myapp'写法 ]
总结:两者不冲突,分属不同场景
- 要做路由拆分、关联不同应用的URL规则,就用
urls.py的include()方式,这是Django路由管理的基础规范。 - 要给应用加自定义配置、修改后台显示名或初始化操作,才需要用到
app.py的AppConfig,属于可选的进阶配置。
实际开发中通常会结合使用:先注册应用(简单场景也可以直接写应用名),再通过根urls.py的include()关联各个app的路由。
内容的提问来源于stack exchange,提问作者Sam Paragon
相关产品推荐
相关产品推荐

