При создании приложения для загрузки и удаления изображений я получаю, 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
в основных настройках проекта. Также попробуйте перезапустить сервер, перезапустив терминал.