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

如何在Django中不硬编码应用名从当前应用导入模块?

Django中避免硬编码应用名引用模型的方法

方法1:使用Python相对导入

这是最简洁直接的方式,利用Python原生的相对导入语法,在当前应用的文件中用.指代当前应用路径:

# 在当前应用的任意文件(如views.py、admin.py)中
from .models import Customer

如果涉及子目录层级,还可以用..表示上级目录(Django标准应用结构中一般很少用到)。这种写法完全不需要硬编码应用名,Python会自动识别当前模块所属的应用路径。

方法2:利用Django的apps模块动态获取模型

如果是在运行时需要动态引用模型(比如通用工具函数、可复用视图中),可以结合Django的apps模块和__package__变量自动获取当前应用名:

from django.apps import apps

# 自动获取当前应用下的Customer模型
Customer = apps.get_model(__package__, 'Customer')

__package__会自动返回当前模块所属的应用名称,无需手动填写。不过这种方式属于动态获取,更适合不需要静态导入的场景。

方法3:在应用__init__.py中导出模型

可以在应用根目录的__init__.py文件中提前导入并导出模型,之后在应用内部的文件中就能用更简洁的方式引用:

  1. 在my_app/__init__.py中添加:
from .models import Customer
  1. 然后在应用内的其他文件中可以这样写:
from . import Customer

这种方式既避免了硬编码应用名,还能进一步简化导入语句。

内容的提问来源于stack exchange,提问作者Jose Machado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:27:24