Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板图像即使使用媒体url和媒体根也不显示_Django_Image_Django Templates_Django Settings - Fatal编程技术网

Django模板图像即使使用媒体url和媒体根也不显示

Django模板图像即使使用媒体url和媒体根也不显示,django,image,django-templates,django-settings,Django,Image,Django Templates,Django Settings,静态图像显示正常。媒体文件夹中的文件未显示在html中。我尝试用各种方式设置媒体url,但都没有成功。我通过django管理面板上传了图片。产品名称显示良好。img.url显示/media/p2.jpg models.py class Product(models.Model): name = CharField(("Name"),max_length=256,blank=False) title_img = models.ImageField(null=Tr

静态图像显示正常。媒体文件夹中的文件未显示在
html
中。我尝试用各种方式设置媒体url,但都没有成功。我通过django管理面板上传了图片。产品名称显示良好。img.url显示/media/p2.jpg

models.py

class Product(models.Model):
    name = CharField(("Name"),max_length=256,blank=False)
    title_img = models.ImageField(null=True, blank=True)
设置.py

PROJECT_ROOT = (os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT  =   os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(PROJECT_ROOT), "media_root")
url.py

urlpatterns = [
        path('', ProductList.as_view() , name="product"),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
template.html

{{p.name}}
<img src="{{p.title_img.url}}">
根据文件:和

  • 它只能用于发展目的
  • settings.DEBUG必须设置为True
  • 它只在url是本地的情况下工作
  • 在您的情况下,1和3接缝可以,但调试设置是否设置为True


    根据文档:,您可以使用参数--unsecure运行服务器,这样您仍然可以在调试设置为False的情况下提供静态文件或媒体文件。

    我更改了一些设置,并能够解决它。可能错误在于我改为
    project\u root/products/url.py
    project\u root/url.py
    。我所做的总体变化:

    在main url.py中,添加了以下内容

    urlpatterns = [
            path('', ProductList.as_view() , name="product"),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    更改了
    设置。py

    MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media/')
    MEDIA_URL = '/media/'
    

    调试设置为true
    MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media/')
    MEDIA_URL = '/media/'