我开始使用django应用程序并尝试在主页中显示图像.但是图像没有显示出来.
我的settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR,"media")
MEDIA_URL = "/media/"
Run Code Online (Sandbox Code Playgroud)
我的urls.py:
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'myapp.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'',include('users.urls')),
)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
我的home.html:
<html>
<head>
<title>MY SITE</title>
</head>
<body>
<img src="/media/image/myimage.jpg" alt="my image"/>
Welcome to my site
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我my image显示文本而不是图像
好的,所以我设置了一个简单的"配对"工作示例,因此没有移动的部件丢失.一些说明:
这意味着你需要破解你的MEDIA引用.(MEDIA实际上是用于文件上传的),你不需要在urls.py文件中使用staticfiles_urlpatterns.当你在settings.py中添加'django.contrib.staticfiles'时,你会得到这种开箱即用的行为
概述:这是你的文件树布局在django 1.6中的样子,以及我在这个答案中引用的文件结构.
??? djproj
? ??? __init__.py
? ??? settings.py
? ??? urls.py
? ??? wsgi.py
??? manage.py
???? myapp
??? admin.py
??? __init__.py
??? models.py
??? static
? ??? myapp
? ??? myimage.jpg
??? templates
? ??? index.html
??? tests.py
??? views.py
Run Code Online (Sandbox Code Playgroud)
第1步:确保您的INSTALLED_APPS中包含django.contrib.staticfiles.
第2步:在您的设置文件中,定义STATIC_URL,例如:
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)
第3步:将home.html更改为这样(我在我的示例中使用了index.html)
[PROJECT_HOME/myapp/templates/index.html]
<html>
<head>
<title>MY SITE</title>
</head>
<body>
{% load staticfiles %}
<img src="{% static "myapp/myimage.jpg" %}" alt="My image"/>
Welcome to my site
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
请务必阅读与STATICFILES_STORAGE相关的django-1.6 staticfiles文档,以便了解这些模板标签为您带来的收益.暗示:python manage.py collectstatic
第4步:(您可能已经完成了此操作,但我没有看到它)确保您的settings.py中定义了TEMPLETE_DIRS并包含您的home.html(这里的关键是django的模板引擎需要为此提供服务)将使用一些模板标签)
[PROJECT_HOME/djproj/settings.py]
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
BASE_DIR + '../myapp/templates',
)
Run Code Online (Sandbox Code Playgroud)
第5步:构建一个呈现home.html页面的视图.
[PROJECT_HOME/myapp/views.py]
from django.shortcuts import render_to_response
def index( request ):
return render_to_response('index.html')
Run Code Online (Sandbox Code Playgroud)
由于这有点令人费解,而且这里有几个动人的部分:这里有一个变更集,显示完整的"变化"
如果任何一个混乱,你可以粗略地拉动整个github项目. Django的staticfiles-setupexample
最后注意:在django中并不总是以这种方式处理STATIC文件.MEDIA目录曾经是您追求的设置.所以这个答案适用于Django 1.6(静态文件是在django 1.3版中添加的)(目录布局在django 1.5中已经更改).
您可以(正如您尝试的那样)将您的媒体目录硬连接到STATIC定义.我也这样做 - 不推荐这个.这就是为什么我没有这样描述如何做到这一点.
| 归档时间: |
|
| 查看次数: |
15669 次 |
| 最近记录: |