【发布时间】:2016-05-27 22:23:59
【问题描述】:
我创建了一个简单的 django 博客,但我无法让图像始终显示在我的帖子中。具体来说,我的图像出现在“列表”视图(网站的主页)中,但不在“详细”视图中(查看单个帖子时)。如果您想实时查看该问题,请访问该网站:endicott.co
列表视图的代码如下:
{% extends "blog/base.html" %}
{% block title %}endicott.co{% endblock %}
{% block content %}
<div class="page-header">
<h1>endicott.co</h1>
<p>Perspectives on society, data, and economics</p>
</div>
{% for post in posts %}
<h2>
<a href="{{ post.get_absolute_url }}">
{{ post.title }}
</a>
</h2>
<p class="date">
Published {{ post.publish }} by {{ post.author }}
</p>
<img src="{{ post.image.url }}" alt="img">
{{ post.body|linebreaks }}
{% endfor %}
{% include "pagination.html" with page=page_obj %}
{% endblock %}
详细视图的代码如下:
{% extends "blog/base.html" %}
{% block title %}{{ post.title }}{% endblock %}
{% block content %}
<h1>{{ post.title }}</h1>
<img src="{{ post.image.url }}" alt="img">
<p class="date">
Published {{ post.publish }} by {{ post.author }}
</p>
{{ post.body|linebreaks }}
{% endblock %}
关于为什么 django 正确显示列表中的图像而不是详细视图的任何想法?让我知道我是否应该发布任何其他代码以获取更多背景信息。
文件结构如下:
blog/
-__pycache__/
-migrations/
-templates/
--blog/
---post/
----detail.html
----list.html
---base.html
--pagination.html
-__init__.py
-admin.py
-apps.py
-models.py
-tests.py
-urls.py
-view.py
media/
-img/
--[where images are stored]
mysite/
-__pycache__/
-static/
-__init__.py
-settings.py
-urls.py
-wsgi.py
我的博客 urls.py 文件如下:
from django.conf.urls import url
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# post views
#url(r'^$', views.post_list, name='post_list'),
url(r'^$', views.PostListView.as_view(), name='post_list'),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
r'(?P<post>[-\w]+)/$',
views.post_detail,
name='post_detail'),
]
if settings.DEBUG:
urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
mysite urls.py 文件如下:
from django.conf.urls import include, url
from django.contrib import admin
##### adds
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('blog.urls',
namespace='blog',
app_name='blog')),
]
if settings.DEBUG:
urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
【问题讨论】:
-
img 标签是
<img src="media/media/img/SSI_Per_Capita.png" alt="img">。在首页上,它尝试从http://www.endicott.co/media/media/img/SSI_Per_Capita.png 加载它,而在详细视图中,它尝试从`endicott.co/2016/05/26/social-security-spending/media/media/img/… 加载它 -
“路线”是什么意思?
-
我从评论中删除了路线,因为我不确定这是否是问题所在。但是 django 的路由是 urls.py 文件。 docs.djangoproject.com/en/1.9/topics/http/urls