Я хотел бы отобразить изображение с ImageField. Я использую Django crispy forms. Кажется, мне нужно использовать помощник макета HTML
, но я не уверен, как получить доступ к переменной шаблона здесь.ImageField Предварительный просмотр в хрустом форме макета
Следующая делает пустой тег изображения:
HTML('<img src="{{ logo.url }}" />')
Могу ли я ссылающийся это неправильно, или есть лучший способ в хрустящей формах?
Вот полный код, так что вы можете получить лучшее представление:
forms.py
class CompanyForm(forms.Form):
name = forms.CharField(required=False, label="Company name")
logo = forms.ImageField(required=False, label="Logo")
# form layout
helper = FormHelper()
helper.form_class = 'form-horizontal'
helper.layout = Layout(
Div(
'name',
HTML('<img src="{{ logo.url }}" />'),
css_class='span4',
),
FormActions(
Submit('submit', 'Save', css_class="btn-primary pull-right"),
)
)
models.py
class Company(models.Model):
name = models.CharField(max_length=100)
logo = models.ImageField(upload_to = 'logos/', null=True)
views.py
Я устанавливаю начальные значения формы, на мой взгляд:
...
profile = Company.objects.get(name="foo")
form = CompanyForm(initial={'name': profile.name, 'logo': profile.logo, })
context = {
'profile_form' : form,
}
return render_to_response('dashboard/company-profile.html', context_instance=RequestContext(request, context))
компания-profile.html
{% load crispy_forms_tags %}
<div class="row">
{% crispy profile_form %}
</div>
Отлично! Большое спасибо! – Banjer
Одна вещь состоит в том, что после отправки формы img разбивается, когда страница загружается. Если я нажму на перезагрузку на странице, тогда она появится нормально. У вас есть эта проблема? Это связано с тем, что img src является '/ media/myfile.jpg' после отправки формы. На перезагрузке страницы он корректно обрабатывается как '/ media/logos/myfile.jpg'. Это потому, что файл не загружается, когда страница возвращается из формы? Является ли родительский каталог мультимедиа местом загрузки темпа или чем-то еще? Возможно, есть другой атрибут, который я могу захватить вместо 'form.imagefile.value'? – Banjer