ModuleNotFoundError, когда модуль явно установлен, DjangoPython

Программы на Python
Ответить
Anonymous
 ModuleNotFoundError, когда модуль явно установлен, Django

Сообщение Anonymous »

Мой последний проект курса Python — создание веб-сайта Pizza с использованием Django.
У меня есть init.py, form.py, main.py. , Manage.py, models.py, myapp.forms, settings.py и README.md, согласно словам Табнина, мне нужно было это запустить.
Каждый раз, когда я захожу в запустить веб-сайт, вместо того, чтобы иметь доступ к нему на 127.0.0.1:8000, он не запускается и в конце продолжает выдавать мне ModuleNotFoundError: Нет модуля с именем myapp.forms, несмотря на то, что он есть, установлен настолько правильно, насколько я могу судить, с помощью Пылинт, а я в растерянности.
Содержание README:

Код: Выделить всё

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 = [
'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',

]

Я могу включить файл models.py, но у меня с ним нет проблем, поэтому я могу оставить его себе, чтобы никто не смог забрать проект.
После ввода «python Manage.py startapp myapp» в терминале проекта через PyCharm он пытается запустить приложение, но в конце снова говорит: «ModuleNotFoundError: Нет модуля с именем myapp.forms >.
Изображение журнала ошибок

Код: Выделить всё

(.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 "", line 1360, in _find_and_load
File "", line 1331, in _find_and_load_unlocked
File "", line 935, in _load_unlocked
File "", line 995, in exec_module
File "", line 488, in _call_with_frames_removed
File "C:\Users\ME\PycharmProjects\PizzaProject\main.py", line 2, in 
from myapp.forms import OrderForm
ModuleNotFoundError: No module named 'myapp.forms'

Я хочу иметь возможность подключаться к тестовому веб-сайту через URL-адрес 127.0.0.1:8000, как я это настроил.
Если кто-нибудь знает, почему он так себя ведет, буду очень признателен за помощь.

Подробнее здесь: https://stackoverflow.com/questions/792 ... led-django
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»