При создании приложения для загрузки и удаления изображений я получаю, ModuleNotFoundError: Нет модуля с именем 'posts.url'

создал проект Django под названием django_project и новое приложение под названием posts.

(.venv) > django-admin startproject django_project .
(.venv) > python manage.py startapp posts

django_project/settings.py

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "posts",  # new
]

python manage.py migrate

posts/models.py

from django.db import models


class Post(models.Model):
    title = models.TextField()
    cover = models.ImageField(upload_to='images/')

    def __str__(self):
        return self.title

config/settings.py

MEDIA_URL = "/media/"
MEDIA_ROOT = BASE_DIR / "media"

(.venv) $ mkdir media (.venv) $ mkdir media/images

posts/admin.py

from django.contrib import admin

from .models import Post

admin.site.register(Post)

python manage.py makemigrations

Миграции для 'posts': posts/migrations/0001_initial.py - Создание модели Post

python manage.py migrate

Операции для выполнения: Применить все миграции: admin, auth, contenttypes, posts, session s Запуск миграций: Применение posts.0001_initial... OK

(.venv) > python manage.py createsuperuser

(.venv) > python manage.py runserver

"До этого момента код работал нормально"


config/urls.py

from django.contrib import admin
from django.conf import settings  # new
from django.urls import path, include  # new
from django.conf.urls.static import static  # new

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("posts.urls")), # new
]

if settings.DEBUG:  # new
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

posts/urls.py

from django.urls import path

from .views import HomePageView

urlpatterns = [
    path("", HomePageView.as_view(), name="home"),
]

posts/views.py

from django.views.generic import ListView
from .models import Post


class HomePageView(ListView):
    model = Post
    template_name = "home.html"

(.venv) > mkdir templates

config/settings.py

TEMPLATES = [
    {
        ...
        "DIRS": [BASE_DIR / "templates"],  # new
        ...
    },
]

templates/home.html

<h1>Django Image Uploading</h1>
<ul>
  {% for post in object_list %}
    <h2>{{ post.title }}</h2>
    <img src="{{ post.cover.url}}" alt="{{ post.title }}">
  {% endfor %}
</ul>

ОШИБКИ

Я не вижу объявления ROOT_URLCONF в основных настройках проекта. Также попробуйте перезапустить сервер, перезапустив терминал.

Вернуться на верх