我想從一個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>
完美一點! Muchas格拉西亞斯! – Banjer
有一點是在提交表單後,img在頁面加載時被破壞。如果我在頁面上重新加載,則顯示正常。你有這個問題嗎?這是因爲在提交表單後img src是'/ media/myfile.jpg'。在頁面重新加載時,它正確地將其作爲'/ media/logos/myfile.jpg'來獲取。是否因爲當頁面從表單提交返回時文件沒有上傳完成?父媒體目錄是否爲臨時上傳位置?也許有另一個屬性,我可以抓住,而不是'form.imagefile.value'? – Banjer