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

Django项目中已存在myapp.forms模块却触发ModuleNotFoundError的问题求助

Django项目中已存在myapp.forms模块却触发ModuleNotFoundError的问题求助

我正在做Python课程的期末项目——用Django搭建一个披萨网站,但遇到了一个头疼的问题:明明myapp.forms模块已经存在,而且Pylint也显示安装配置没问题,但每次启动网站时,总是报错ModuleNotFoundError: No module named myapp.forms,根本没法访问127.0.0.1:8000。

我按照Tabnine的提示准备了这些文件:__init__.py、forms.py、main.py、manage.py、models.py、myapp.forms、settings.py还有README.md。

项目目录结构(来自README.md)

PizzaProject/
├── myapp/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py  # Your OrderForm should be here
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── PizzaProject/
├── manage.py
└── settings.py

相关文件内容

apps.py 内容

"""
This module defines the configuration for the myapp Django app.
"""

from django.apps import AppConfig

class MyappConfig(AppConfig):
    """
    Configuration class for the myapp Django app.
    """

    name = 'myapp'

forms.py 内容

from django import forms
from django.db import models  # Import models from django.db instead of django.models

class OrderForm(forms.ModelForm):
    """Form for creating and updating Order instances."""

    class Meta:
        """Meta class for OrderForm."""

        model = models.Model  # Use models.Model instead of django.models.Model
        fields = ['pizza', 'toppings', 'customer_name', 'customer_phone']

main.py 内容

from django.shortcuts import render, redirect
from myapp.forms import OrderForm
from myapp.models import Pizza, Topping

def menu_view(request):
    """View function for the menu page."""
    pizzas = Pizza.objects.filter(is_available=True)
    toppings = Topping.objects.filter(is_available=True)
    return render(request, 'menu.html', {'pizzas': pizzas, 'toppings': toppings})


def confirm_order_view(request):
    """View function for the order confirmation page."""
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.calculate_total()
            order.save()
            form.save_m2m()  # Save ManyToMany toppings
            return redirect('order_success')
    else:
        form = OrderForm()
    return render(request, 'confirm.html', {'form': form})


def success_view(request):
    return render(request, 'order_success.html')

测试文件内容

"""This module contains test cases for the menu view."""
import django.test

from myapp.models import Pizza, Topping

class MenuViewTestCase(django.test.TestCase):
    def setUp(self):
        self.factory = django.test.RequestFactory()
        Pizza.objects.create(name="Margherita", is_available=True)
        Pizza.objects.create(name="Pepperoni", is_available=False)
        Topping.objects.create(name="Cheese", is_available=True)
        Topping.objects.create(name="Mushrooms", is_available=False)

myapp.forms 文件内容

from django import forms
from django.db import models  # Import models from django.db instead of django.models

class OrderForm(forms.ModelForm):
    """Form for creating and updating Order instances."""

    class Meta:
        """Meta class for OrderForm."""

        model = models.Model  # Use models.Model instead of django.models.Model
        fields = ['pizza', 'toppings', 'customer_name', 'customer_phone']

settings.py 中INSTALLED_APPS配置

INSTALLED_APPS = [
    'myapp.apps.MyappConfig',  # Add your app here#
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

]

错误日志详情

我在PyCharm终端执行python manage.py startapp myapp后,启动时出现如下错误:

(.venv) PS C:\Users\ME\PycharmProjects\PizzaProject> python manage.py startapp myapp
INFO:     Will watch for changes in these directories: ['C:\\Users\\ME\\PycharmProjects\\PizzaProject']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [16444] using WatchFiles
Process SpawnProcess-1:
Traceback (most recent call last):
  File "C:\Users\ME\AppData\Local\Programs\Python\Python312\Lib\multiprocessing\process.py", line 314, in _bootstrap
    self.run()
  File "C:\Users\ME\AppData\Local\Programs\Python\Python312\Lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\ME\PycharmProjects\PizzaProject\.venv\Lib\site-packages\uvicorn\_subprocess.py", line 80, in subprocess_started
    target(sockets=sockets)
  File "C:\Users\ME\PycharmProjects\PizzaProject\.venv\Lib\site-packages\uvicorn\server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ME\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\ME\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\ME\PycharmProjects\PizzaProject\main.py", line 2, in <module>
    from myapp.forms import OrderForm
ModuleNotFoundError: No module named 'myapp.forms'

我现在的目标就是能正常启动网站,通过127.0.0.1:8000访问测试页面,实在搞不懂哪里出问题了,有没有大神能帮忙排查一下?

备注:内容来源于stack exchange,提问作者Mitchell S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:18:11