Как загрузить изображение, которое было загружено ранее, в файл HTML?

Поэтому я настроил загрузку изображения профиля в соответствии с http://www.tangowithdjango.com/book/chapters/login.html. Затем я нашел второй ответ (от пользователя Raisins) полезным для моей цели и реализовал его Расширение модели пользователя с помощью настраиваемых полей в Django. Поскольку я понял, что этот ответ устарел, я также попробовал предложенное здесь решение для миграции Избавьтесь от get_profile() при переходе на Django 1.6, что не улучшило мою ситуацию

Затем в своих представлениях я добавляю необходимые сведения, включая изображение, в словарь и отображаю i на HTML-странице. Похоже, что UserProfile не возвращает правильный объект.

u=User.object.get(username__exact=request.user)
profile=UserProfile.objects.get(user=u)
global client
client['login']=True
client['name']=u.username
client['password']=u.password
client['email']=u.email
client['picture']=profile.picture
return render(request,'index.html',{'client':client})

И когда я пытаюсь отобразить детали на HTML-странице, загружается все, кроме изображения. Я старался

<img src="profile_images/{{client.picture}}">

где profile_images находится в корневом каталоге. Я осмотрел элемент и обнаружил это

<img src="/static/profile_images/%7B%7B%20client.picture%20%7D%7D">

где я ожидал "1.jpg" вместо "%7B%7B%20client.picture%20%7D%7D".

Любая помощь приветствуется. Спасибо


person Nike    schedule 12.06.2014    source источник


Ответы (2)


Ответ Изюма устарел. Пожалуйста, не используйте AUTH_PROFILE_MODULE в Django 1.6. больше. На самом деле вам даже не нужно обрабатывать сигнал post_save.

Основываясь на том же учебнике, вы найдете код для своего представления:

u = User.objects.get(username=request.user)

try:
    p = UserProfile.objects.get(user=u)
except:
    p = None

return render(request,'index.html',{'client':client, 'userprofile':p})

В вашем шаблоне используйте:

    {% if userprofile.picture %}
        <img src="{{ userprofile.picture.url }}"  />
    {% endif %}
person arocks    schedule 12.06.2014
comment
Когда мой код запускается 'userprofile'‹--› p оказывается None. Так что все равно не работает - person Nike; 12.06.2014
comment
С небольшой настройкой «профиль пользователя»‹--› p не None, но теперь я даже не могу получить доступ к таким данным, как имя или адрес электронной почты, которые я мог сделать раньше - person Nike; 12.06.2014
comment
Это ожидается, если пользователь еще не создал профиль. Попробуйте использовать оболочку администратора или django, чтобы создать профиль для этого пользователя. - person arocks; 12.06.2014
comment
Я не уверен, понимаю ли я проблему. Вы можете получить доступ к имени пользователя в шаблоне, используя {{ user.username }} - person arocks; 12.06.2014
comment
Я отредактировал вопрос, основываясь на вашей помощи, но исходная проблема загрузки изображения не устранена. - person Nike; 12.06.2014

Я решил свою проблему, используя

{% load staticfiles %}
<img src="{% static client.picture %}"  />
person Nike    schedule 12.06.2014