Python Django ImageField没有与之关联的url属性
我正在尝试创建一个单页应用程序,您可以将图片上传到数据库,并将其显示在索引页中 我无法显示照片,即使在调用html部分Python Django ImageField没有与之关联的url属性,python,python-3.x,django,django-models,django-templates,Python,Python 3.x,Django,Django Models,Django Templates,我正在尝试创建一个单页应用程序,您可以将图片上传到数据库,并将其显示在索引页中 我无法显示照片,即使在调用html部分{{{post.picture}}时,它返回图片的路径 媒体设置: MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' 视图: 型号: from django.db import models class Post(models.Model): picture = models.Ima
{{{post.picture}}
时,它返回图片的路径
媒体设置:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
视图:
型号:
from django.db import models
class Post(models.Model):
picture = models.ImageField(upload_to='photos/', blank=True, null=True)
表格:
from django.forms import ModelForm
from random_tasks_app.models import Post
class UploadImageForm(ModelForm):
class Meta():
model = Post
fields = '__all__'
html文件:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form method = "POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
{%for post in posts%}
<img src="{{ post.picture.url }}"/>
{%endfor%}
</body>
</html>
谢谢。您可以添加一个默认属性,它将被解决
picture = models.ImageField(upload_to='default/', blank=True, null=True, default='default.jpg' )
hotel
来自哪里?当我收到错误时,从某个网站复制了这部分代码(以为我可能错过了一个花括号或什么),没有注意到,我将其更改为post,但我仍然收到相同的错误。在html文件中将您的代码更改为此,以查看您的URL:{%forpost in posts%}{{post.picture.url}{%endfor%}@AndreyBorzenko这返回一个错误。它只是返回:“picture”属性没有与之关联的文件。@AndreyBorzenko我让它工作了,我在上传图片时得到了类似“/media/photos/Screenshot_70.png”的内容。尝试了这个方法,但似乎不起作用:对我不起作用,但我注意到一件奇怪的事情,出于某种原因,HTML不会显示任何图像,即使它与django无关。我认为这与路由有关。似乎django正在阻止任何正在显示的图像表单,即使我试图显示一个不使用django功能的图像。如果我使用普通html打开它,这会起作用,但在django服务器上运行它时,它会被禁用st可能不起作用,我认为如果您提交ImageField空django将引发错误,谢谢。忘记在URL.py URL模式的末尾添加:+static(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
ValueError: The 'picture' attribute has no file associated with it.
picture = models.ImageField(upload_to='default/', blank=True, null=True, default='default.jpg' )