我的目标是用户可以上传新的漫画封面图像和漫画标题。我想在模板上显示图像,但是它在我的命令行中显示。
Not Found: /media/onepiece.jpg
在我的Postgressql中添加了它。我唯一看到的是一个带有白色云朵和绿色山丘的文件。我还安装了枕头。我的媒体文件夹包含 images 子文件夹,并且为空。我真的很困惑,因为错误消息是在 media文件夹中查找的,但不是 images 的更深一层。
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'
应用
models.py
class Manga(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
img = models.ImageField(upload_to='images', blank=True)
title = models.TextField(default=None, null=True)
views.py
def manga_post(request):
manga_img = request.POST.get('manga_img')
manga_title = request.POST.get('manga_title')
manga_conf= Manga.objects.get(user_id=request.user.id)
manga_conf.img = manga_img
manga_conf.title = manga_title
manga_settings.save()
return redirect('settings_manga')
模板(帖子在哪里出现)
<div class="container">
<form action="{% url 'post_manga' %}" method="POST" class="form-horizontal">
{% csrf_token %}
<div class="row">
<div class="col-md-6">
{% if manga.img %}
<img src="{{ manga.img.url }}" alt="Add Manga Picture">
{% else %}
<img src="https://image.flaticon.com/icons/png/512/43/43254.png"
alt="" class="manga-img">
{% endif %}
</div>
<div class="col-md-6">
<div class="input-group mb-3">
<div class="custom-file">
<input type="file" class="custom-file-input" id="manga-image-input" name="manga_img">
<label class="custom-file-label" for="imageGroup" id="img-label">Choose Image</label>
</div>
</div>
</div>
</div>
</form>
我在网上搜索了很多内容。我见过很多SO Post关于人们是否忘记将静态信息添加到urlspatterns或应用程序级别的信息。这不能解决这个问题。
项目中的urls.py
urlpatterns = [
path('mangas/', include('manga.urls')),
path('admin/', admin.site.urls),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
从应用程序urls.py
urlpatterns = [
path('', views.mangas, name='mangas'),
path('post', views.post_manga, name='post_manga'),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
希望我能进行一些编辑,如果您需要帮助,请注意我。我真的很挣扎。
最佳问候 马库斯