我是Django的新手,我目前在Django Admin中显示上传的图像时有问题。我已经遵循了许多张贴的Q和A在这里的stackoverflow,但那些工作在我的问题。我希望任何活跃的编码忍者可以帮助我解决这个问题。以下是问题的详细视图:
-
我在settings.py
中定义了MEDIA_ROOT和MEDIA_URLBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) MEDIA_ROOT = os.path.join(BASE_DIR, "media") MEDIA_URL = "/media/"
-
这是我在models.py中的上传模型:
from django.utils.html import mark_safe class ImageDetails(models.Model): image = models.ImageField(null=True) def image_img(self): if self.image: return mark_safe('<img src="%s" height="125px" width="125px"/>' % (self.image.url)) else: return '(No image found)' image_img.short_description = 'Thumbnail'
-
In my Application urls.py:
urlpatterns = [ url(r'^inputImage', views.inputImage, name='inputImage'), url(r'', views.index), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
-
In my admin.py:
class ImageDetailsAdmin(admin.ModelAdmin): fields = ["image"] #for file upload list_display = ("image_img",) admin.site.register(ImageDetails, ImageDetailsAdmin)
图像已成功存储在ProjectDIR/media。HTML返回url: http://127.0.0.1:8000/media/imagename.jpg at img标签。但是页面无法加载图像(每当使用url http://127.0.0.1:8000/media/imagename.jpg时,我将被重定向到索引页)。我使用的是Django 1.10版本
正如所怀疑的,这个问题是关于Django中的url。出现问题是因为我在应用程序urls.py中声明了以下url模式:
url(r'', views.index, name='index'),
我通过将代码改为:
解决了这个问题 url(r'^$', views.index, name='index'),
并在项目的主url .py中添加以下代码:
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)