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

创建article应用后导入*引发AttributeError: module 'article.admin'无site属性

为啥from article import *会搞崩你的Django Admin?

嘿,我来给你拆解下这个问题的根源:

你在配置文件里写的from article import *是个「全局导入」,它会把article应用下所有模块、变量、类一股脑塞进当前文件的命名空间里。刚好你的article应用里有个admin.py,这就导致article.admin模块被导入进来,直接把Django自带的django.contrib.admin那个admin对象给覆盖了!

你看报错里的admin.site.urls,本来这个admin应该是Django内置的后台站点对象(自带site属性),结果现在变成了你的article.admin模块——而你的article/admin.py里根本没定义site这个属性,可不就抛出AttributeError了嘛!


怎么解决?

1. 别用全局导入(最靠谱的方案)

真的,在Django的配置文件(比如settings.py、urls.py)里千万别用from xxx import *,太容易搞出命名冲突了。要是你确实需要导入article里的东西,明确指定要导入的内容就行:

# 比如只导入你需要的视图或模型
from article import views, models

2. 调整导入顺序(临时救急,不推荐长期用)

如果非要保留全局导入,把Django自带的admin导入放在前面,这样它就不会被后面的from article import *覆盖了:

# 先把官方的admin导入进来
from django.contrib import admin
# 再导入article的内容
from article import *

3. 给导入的模块起别名(如果确实需要用article里的admin内容)

要是你得用到article.admin里的东西,给它整个别名,别和官方的admin重名:

from article import admin as article_admin

额外提一句

如果你想给article应用配置后台管理,你的article/admin.py应该是这个样子的(把模型注册到Django默认的admin站点):

from django.contrib import admin
from .models import Article

# 把你的Article模型注册到官方的admin站点
admin.site.register(Article)

但就算你这么写了,全局导入还是会搞乱命名空间,所以还是乖乖放弃from article import *吧!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:44:29