【发布时间】:2021-12-31 17:14:04
【问题描述】:
对于 Django 和一般的 Web 开发来说是新手。但我关注了tutorial 来创建我的第一个站点。一切正常,直到我完成并想使用 Django 管理面板编辑信息。
主要问题是我有一个如下所示的模型,它使用 FilePathField 来描述图像位置。教程让我把图片放在/home/pi/mysite/projects/static/img。
from django.db import models
class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
technology = models.CharField(max_length=20)
image = models.FilePathField('/img')
def __str__(self):
return self.title #or self.title for blog posts
起初这在网站上显示图像时效果很好,但是一旦我尝试从管理面板导航到/change/ url,我会得到FileNotFoundError at /admin/projects/project/1/change/ [Errno 2] No such file or directory: '/img'
于是我环顾四周,发现 FilePathField 是一个绝对路径,所以尝试用/home/pi/mysite/projects/static/img/ 绝对定义它。这阻止了错误的发生,这让我至少可以从管理面板访问/change/ url。面板现在显示带有下拉菜单的图像字段,我可以使用它在上面的不同图像之间进行选择,这些图像位于 /home/pi/mysite/projects/static/img/。但是在管理面板中,一旦我点击保存,图像将不再显示在网站上。在网站上使用检查元素后,它似乎试图从/static/projects/static/img 中提取图像。然后我尝试将图像移动到/static/projects/static/img,但随后它们不再显示在管理面板的下拉框中,也没有显示在网站上。
所以此时我有点困惑,我应该在哪里指向 FilePathField,这将允许我在网站上显示图像并通过管理面板更改它们。
【问题讨论】:
标签: python django static django-admin