我的模型中有这个图像字段
foto = models.ImageField(upload_to="user/%Y/%m/%d",default='')
并在我的设置中:
MEDIA_ROOT = os.path.join(PROJECT_PATH, "media")
MEDIA_URL = "/media/"
并在我的模板中:
<img class="profilfoto" src="{{MEDIA_URL|escapejs}}{{user.foto.name}}" />
其他带upload_to='.'
的图片正在保存到媒体文件夹中,但user
文件夹未创建,为什么会这样?
我运行了syncdb和schemamigration,一切正常但加载此图片时出现404错误,因为路径不在那里。什么可能是我的错?
答案 0 :(得分:1)
escapejs
转义用于JavaScript字符串的字符。这不会使字符串在HTML中使用安全,但在使用模板生成JavaScript / JSON时确实可以防止语法错误。
<img class="profilfoto" src="{{MEDIA_URL|escapejs}}{{user.foto.name}}" />
您的上述代码会导致,例如:user/2013\u002D04\u002D10_170411/image.png
,在加载此图片时会出现404错误。
<强>更新强>
保存或更新图像时,必须在表单中定义enctype。这将允许您保存图像或文件:
<form id="registerform" action="/angemeldet/" method="post"
enctype="multipart/form-data">
{% csrf_token %}
和
form = YourForm(request.POST, request.FILES)
if form.is_valid():
答案 1 :(得分:-1)
尝试在upload_to中向参数的开头添加斜杠:
foto = models.ImageField(upload_to="/user/%Y/%m/%d",default='')