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

使用Django REST Framework建博客API时posts模块找不到错误

解决Django中ModuleNotFoundError: No module named 'posts'问题

针对你执行python manage.py makemigrations posts时出现的模块找不到错误,结合你的目录结构和配置,可尝试以下几种解决方案:

1. 确保在正确目录执行命令

从错误路径/Users/xxx/dev/api/blog/blog/../manage.py能看出,manage.py位于/Users/xxx/dev/api/blog/目录,而posts应用在/Users/xxx/dev/api/blog/blog/子目录中。你需要切换到**manage.py所在的上级目录**(即/Users/xxx/dev/api/blog/)执行命令,而非在blog子目录内运行。

2. 修正manage.py的路径配置

由于你的项目是嵌套结构(外层blog目录下还有一个blog子目录),默认的manage.py可能无法识别内层目录的模块。打开manage.py,在导入sys后添加一行代码,将内层blog目录加入Python搜索路径:

import os
import sys

# 新增此行,将子blog目录加入路径
sys.path.append(os.path.join(os.path.dirname(__file__), 'blog'))

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blog.settings')
    # 其余代码保持不变

3. 简化INSTALLED_APPS配置写法

你当前在INSTALLED_APPS中写的是"posts.apps.PostConfig",可以尝试简化为直接写"posts":

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "rest_framework",
    "posts",  # 改为该写法
]

因为posts/apps.py中已经定义了name = "posts",Django会自动识别对应的AppConfig。

4. 验证Python搜索路径

可以在settings.py开头添加临时代码,打印当前Python搜索路径,确认posts所在目录是否在列表中:

import sys
print(sys.path)

执行python manage.py check命令,查看输出的路径列表。如果/Users/xxx/dev/api/blog/blog/(posts的上级目录)不在列表中,按方案2的方法添加路径即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:02:03