Python 如何在Django模板中包含图像文件?
我是Django的新手,我正在尝试通过一个名为“dubliners”的简单项目和一个名为“book”的应用程序来学习它。目录结构如下所示:Python 如何在Django模板中包含图像文件?,python,django,django-templates,Python,Django,Django Templates,我是Django的新手,我正在尝试通过一个名为“dubliners”的简单项目和一个名为“book”的应用程序来学习它。目录结构如下所示: dubliners/book/ [includes models.py, views.py, etc.] dubliners/templates/book/ 我有一个JPG文件,需要显示在每个网页的标题。我应该把文件存放在哪里?我应该使用哪个路径让标记使用模板显示它?我尝试了不同的位置和路径,但到目前为止没有任何效果 谢谢你在下面贴出的答案。然而,我尝
dubliners/book/ [includes models.py, views.py, etc.]
dubliners/templates/book/
我有一个JPG文件,需要显示在每个网页的标题。我应该把文件存放在哪里?我应该使用哪个路径让标记使用模板显示它?我尝试了不同的位置和路径,但到目前为止没有任何效果
谢谢你在下面贴出的答案。然而,我尝试了图像的相对路径和绝对路径,但仍然会在网页中显示一个损坏的图像图标。例如,如果我的主目录中有一个图像,并在模板中使用此标记:
<img src="/home/tony/london.jpg" />
图像不显示。但是,如果将网页保存为静态HTML文件,则会显示图像,因此路径是正确的。也许Django附带的默认Web服务器仅在图像位于特定路径时才会显示图像?在生产环境中,您只需将模板生成的HTML指向主机存储媒体文件的位置即可。因此,您的模板将只包含一个示例
<img src="../media/foo.png">
然后,您只需确保目录中有相关的文件
在发展过程中是一个不同的问题。django文档对其进行了简洁明了的解释,这样链接到此处并在此处键入更为有效,但基本上您将为站点媒体定义一个视图,其中包含指向磁盘上位置的硬编码路径
对。在生产环境中,您只需将模板生成的HTML指向主机存储媒体文件的位置即可。因此,您的模板将只包含一个示例
<img src="../media/foo.png">
然后,您只需确保目录中有相关的文件
在发展过程中是一个不同的问题。django文档对其进行了简洁明了的解释,这样链接到此处并在此处键入更为有效,但基本上您将为站点媒体定义一个视图,其中包含指向磁盘上位置的硬编码路径
对。你的
<img src="/home/tony/london.jpg" />
在生产环境中,您希望跳过这一步,让您的http服务器(apache、lighttpd等)服务于静态文件 你的
<img src="/home/tony/london.jpg" />
在生产环境中,您希望跳过这一步,让您的http服务器(apache、lighttpd等)服务于静态文件 试试这个
设置.py
#通常是os.path.join(os.path.dirname(_文件,'media'))
媒体根=“/MEDIA”
媒体URL='/MEDIA/'
url.py
urlpatterns=patterns(“”,
(r'^media/(?P.*)$,'django.views.static.service',
{'document_root':settings.MEDIA_root}),
)
.html
/“/>
警告
注意!使用Context()
将为{{MEDIA\u URL}}
生成一个空值。必须改用RequestContext()
我希望这会有帮助。试试这个
设置.py
#通常是os.path.join(os.path.dirname(_文件,'media'))
媒体根=“/MEDIA”
媒体URL='/MEDIA/'
url.py
urlpatterns=patterns(“”,
(r'^media/(?P.*)$,'django.views.static.service',
{'document_root':settings.MEDIA_root}),
)
.html
/“/>
警告
当心!使用Context()
将为{{MEDIA\u URL}}
生成一个空值。您必须改用RequestContext()
我希望,这会有所帮助。我花了整整两天的时间来研究这个问题,所以我想我也会分享我的解决方案。从2010年11月26日起,当前分支为1.2.X,这意味着您必须在settings.py中包含以下内容:
MEDIA_ROOT=“”(即/home/project/django/app/templates/static)
媒体URL=”http://localhost:8000/static/"
*(请记住,MEDIA_ROOT是文件所在的位置,MEDIA_URL是模板中使用的常量。)*
然后在url.py中放置以下内容:
import settings
# stuff
(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
导入设置
#东西
(r“^static/(?P.*)”,“django.views.static.service”,{'document_root':settings.MEDIA_root}),
然后,您可以在html中使用:
<img src="{{ MEDIA_URL }}foo.jpg">
<img class="scale-with-grid" src="{{object.photo.url}}"/>
django的工作方式(据我所知是:
我花了整整两天的时间研究这个问题,所以我想我也应该分享一下我的解决方案。从2010年11月26日起,当前的分支是1.2.X,这意味着您必须在settings.py中包含以下内容:
MEDIA_ROOT=“”(即/home/project/django/app/templates/static)
媒体URL=”http://localhost:8000/static/"
*(请记住,MEDIA_ROOT是文件所在的位置,MEDIA_URL是模板中使用的常量。)*
然后在url.py中放置以下内容:
import settings
# stuff
(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
导入设置
#东西
(r“^static/(?P.*)”,“django.views.static.service”,{'document_root':settings.MEDIA_root}),
然后,您可以在html中使用:
<img src="{{ MEDIA_URL }}foo.jpg">
<img class="scale-with-grid" src="{{object.photo.url}}"/>
django的工作方式(据我所知是:
MEDIA_ROOT = '/home/USER/Projects/REPO/src/PROJECT/APP/static/media/'
MEDIA_URL = '/static/media/'
这需要您将媒体文件夹移动到静态文件夹的子目录中
然后,您可以在模板中使用:
<img src="{{ MEDIA_URL }}foo.jpg">
<img class="scale-with-grid" src="{{object.photo.url}}"/>
另一种方法:
MEDIA_ROOT = '/home/USER/Projects/REPO/src/PROJECT/APP/static/media/'
MEDIA_URL = '/static/media/'
这需要您将媒体文件夹移动到静态文件夹的子目录中
然后,您可以在模板中使用:
<img src="{{ MEDIA_URL }}foo.jpg">
<img class="scale-with-grid" src="{{object.photo.url}}"/>
我明白,你的问题
return render (request, "whatever.html", {'foo':Foo.objects.get(pk = 1)})
<img src = "{{foo.bar.url}}">
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urlpatterns += patterns('django.views.static',(r'^media/(?P<path>.*)','serve',{'document_root':settings.MEDIA_ROOT}), )
<img src="{{MEDIA_URL}}/image.png" >
<html>
<head>
{% load staticfiles %} <!-- Prepare django to load static files -->
</head>
<body>
<img src={% static "image.jpg" %}>
</body>
</html>