#javascript #python #html #django #django-models
Вопрос:
Я надеюсь, что вы сможете помочь мне с моим проектом Django. Я могу загружать изображения в папку media_cdn внутри папки, основанной на имени слизняка. Проблема возникает, когда я пытаюсь отобразить изображение внутри списка сообщений и публикации. Это выдает ошибку, когда я перехожу на домашнюю страницу
Вот мой код
settings.py /мой сайт
STATICFILES_DIRS=[
Path(BASE_DIR,'static'),
Path(BASE_DIR,'media')
]
STATIC_URL = '/static/'
MEDIA_URL ='/media/'
STATIC_ROOT=Path(BASE_DIR,'static_cdn')
MEDIA_ROOT=Path(BASE_DIR,'media_cdn')
models.py/blog
def upload_location(instance, filename):
file_path = 'blog/{author_id}/{title}-{filename}'.format(
author_id=str(instance.author.id),title=str(instance.title), filename=filename)
return file_path
class BlogPost(models.Model):
title = models.CharField(max_length=50, null=False, blank=False)
body = models.TextField(max_length=5000, null=False, blank=False)
image = models.ImageField(upload_to=upload_location, null=True, blank=True)
date_published = models.DateTimeField(auto_now_add=True, verbose_name="date published")
date_updated = models.DateTimeField(auto_now=True, verbose_name="date updated")
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
slug = models.SlugField(blank=True, unique=True)
def __str__(self):
return self.title
@receiver(post_delete, sender=BlogPost)
def submission_delete(sender, instance, **kwargs):
instance.image.delete(False)
def pre_save_blog_post_receiver(sender, instance, *args, **kwargs):
if not instance.slug:
instance.slug = slugify(instance.author.username "-" instance.title)
pre_save.connect(pre_save_blog_post_receiver, sender=BlogPost)
blog_post_snip.html
{% if blog_post %}
<a href="{% url 'blog:detail' post.slug %}">
<img class="card-img-top" src="{{blog_post.image.url}}">
</a>
...
{% else %}
<div class="container">
<div class="row">
<div class="card m-auto">
<div class="card-body mt-2 mb-2">
<h2 class="card-title">No results</h2>
<p class="card-text">There were no results matching the search: "{{query}}"</p>
</div>
</div>
</div>
</div>
{% endif %}
url.py
from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('', home_screen_view, name="home"),
path('account/', account_view, name="account"),
path('admin/', admin.site.urls),
path('blog/', include('blog.urls', 'blog')),
...
if settings.DEBUG:
urlpatterns = static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Всякий раз, когда я изменяю blog_post.image.url на blog_post.img.url, он отображает страницу, однако затем выдает еще одну ошибку, когда я нажимаю на сообщение без изображения. Я был бы очень признателен, если бы вы показали мне, как решить эту проблему