Джанго - почему это не работает?

У меня есть это поле изображения в моей модели

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='')
Другие вопросы по тегам