无法显示上传的图片django
cant display uploaded image django
为什么我使用以下设置无法正确显示我上传的图片。
url 在查看页面源代码时正确显示(我认为)。该图像只是损坏的图像缩略图。源码中的url显示为/media/uploads/group_images/my_image_name
如果相关,图像是从管理员上传的,但我也希望能够上传到其他地方(即 - 在呈现的模板中上传表单)
在 settings.py
....
MEDIA_URL = "/media/"
MEDIAFILES_DIRS = []
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
在models.py
class BlogGroup(models.Model):
title = BleachField()
image = models.ImageField(upload_to="uploads/group_images", default="uploads/group_images/none/none.jpg")
created = models.DateTimeField(default = datetime.now)
def __str__(self):
return self.title
在forms.py
class BlogGroupForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(BlogGroupForm, self).__init__(*args, **kwargs)
self.fields["title"].requried = True
self.fields["image"].required = True
self.fields["title"].widget = forms.TextInput()
class Meta:
model = BlogGroup
fields = ["title", "image"]
urls.py
urlpatterns = patterns('blog.views',
(r'^admin/', include(admin.site.urls)),
.....,
(r'^ckeditor/', include('ckeditor.urls')),
(r"", "main"),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
查看
def main(request):
groups = BlogGroup.objects.all().order_by("created")
context = {'groups':groups, 'user':request.user}
return render(request, "list.html", context)
模板
{% for group in groups %}
<div class = "row">
<div class = "col-xs-12">
{{ group.title }}
</div>
<div class = "col-xs-12">
<img src = "{{ group.image.url }}" alt = ""/>
</div>
</div>
{% endfor %}
改变你url.py这样:
urlpatterns = patterns('blog.views',
(r'^admin/', include(admin.site.urls)),
.....,
(r'^ckeditor/', include('ckeditor.urls')),
(r"", "main"),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
问题出在您的 url 调度程序中。
当 django 进行 url 到调度程序时,它从上到下逐个抛出你的 urls,如果有正则表达式匹配则停止。
您在 (r"", "main"),
中的 url ""
匹配所有字符串。
您需要将其替换为 (r"^$", "main"),
以仅匹配空字符串。
更多信息:
为什么我使用以下设置无法正确显示我上传的图片。
url 在查看页面源代码时正确显示(我认为)。该图像只是损坏的图像缩略图。源码中的url显示为/media/uploads/group_images/my_image_name
如果相关,图像是从管理员上传的,但我也希望能够上传到其他地方(即 - 在呈现的模板中上传表单)
在 settings.py
....
MEDIA_URL = "/media/"
MEDIAFILES_DIRS = []
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
在models.py
class BlogGroup(models.Model):
title = BleachField()
image = models.ImageField(upload_to="uploads/group_images", default="uploads/group_images/none/none.jpg")
created = models.DateTimeField(default = datetime.now)
def __str__(self):
return self.title
在forms.py
class BlogGroupForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(BlogGroupForm, self).__init__(*args, **kwargs)
self.fields["title"].requried = True
self.fields["image"].required = True
self.fields["title"].widget = forms.TextInput()
class Meta:
model = BlogGroup
fields = ["title", "image"]
urls.py
urlpatterns = patterns('blog.views',
(r'^admin/', include(admin.site.urls)),
.....,
(r'^ckeditor/', include('ckeditor.urls')),
(r"", "main"),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
查看
def main(request):
groups = BlogGroup.objects.all().order_by("created")
context = {'groups':groups, 'user':request.user}
return render(request, "list.html", context)
模板
{% for group in groups %}
<div class = "row">
<div class = "col-xs-12">
{{ group.title }}
</div>
<div class = "col-xs-12">
<img src = "{{ group.image.url }}" alt = ""/>
</div>
</div>
{% endfor %}
改变你url.py这样:
urlpatterns = patterns('blog.views',
(r'^admin/', include(admin.site.urls)),
.....,
(r'^ckeditor/', include('ckeditor.urls')),
(r"", "main"),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
问题出在您的 url 调度程序中。 当 django 进行 url 到调度程序时,它从上到下逐个抛出你的 urls,如果有正则表达式匹配则停止。
您在 (r"", "main"),
中的 url ""
匹配所有字符串。
您需要将其替换为 (r"^$", "main"),
以仅匹配空字符串。
更多信息: