You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:10:25