我是新的Django和我一直在关注Django的教程“djangogirl”但我想添加图片,所以我做了一个model.py
这样的:上传图片并使用Django
class Post(models.Model):
author = models.ForeignKey('auth.User')
image = models.ImageField()
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
这是我view.py
:
def posts(request):
posts = Post.objects.order_by('published_date')
return render(request, 'my_blog/posts.html', {'posts': posts})
而且my_blog.html
:
{% extends 'my_blog/base.html' %}
{% load staticfiles %}
{% block content %}
<link rel="stylesheet" href="{% static 'style/css/posts.css' %}">
<div id="postsContainer">
<div id="posts">
{% for post in posts %}
<div>
<h3 class="date">Published the: {{ post.published_date }}</h3>
<h1><a href="">{{ post.title }}</a></h1>
<img src="{{ post.image.url }}"/>
<p>{{ post.text|linebreaks }}</p>
</div>
<div id="button">
<button type="button" class="btn btn-primary">Read more</button>
</div>
<div class="top-divider"></div>
{% endfor %}
</div>
</div>
{% endblock %}
我通过Django管理页面插入图像。
的问题是,在我的HTML返回的URL是很奇怪的,如:./images_SseHlrA.png
,并没有明显的正确显示的画面。我该如何解决它?
显然图片是在根级别“放养”(比同级别的文件manage.py
这个问题是为什么呢?我能怎样改变的,什么是这样做的最好方法是什么?
好,谢谢,现在我有一个正常的URL“/上传/插图/ images.png”。但仍然无法找到图片。 “上传”文件夹是在根目录下创建的,并且图像存储在目录中,我应该在模板中导入某些内容?就像我为静态文件所做的那样:{%load staticfiles%} – mel
如果您在呈现的页面上查看源代码,那么为图像指定了哪个URL?现在检查Django文档中的MEDIA_URL https://docs.djangoproject.com/en/1.9/ref/settings/#media-url - 您的设置和工作是否正确? MEDIA_URL和MEDIA_ROOT用于确定上传媒体的位置。 – shacker