Джанго - почему это не работает?
У меня есть это поле изображения в моей модели
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, так как пути там нет. в чем может быть моя ошибка?
2 ответа
escapejs
Экранирует символы для использования в строках JavaScript. Это не делает строку безопасной для использования в HTML, но защищает вас от синтаксических ошибок при использовании шаблонов для генерации JavaScript/JSON.
<img class="profilfoto" src="{{MEDIA_URL|escapejs}}{{user.foto.name}}" />
Ваш приведенный выше код приводит, например, к: user/2013\u002D04\u002D10_170411/image.png
, что дает вам 404 ошибку при загрузке этого изображения.
ОБНОВИТЬ:
когда вы сохраняете или обновляете изображение, вы должны определить энктип в форме. Это позволит вам сохранить изображение или файл:
<form id="registerform" action="/angemeldet/" method="post"
enctype="multipart/form-data">
{% csrf_token %}
А ТАКЖЕ
form = YourForm(request.POST, request.FILES)
if form.is_valid():
Попробуйте добавить косую черту в начало вашего аргумента в upload_to:
foto = models.ImageField(upload_to="/user/%Y/%m/%d",default='')