【发布时间】:2011-02-09 00:41:18
【问题描述】:
我是一个新的 Djangoer,正在弄清楚如何构建自定义小部件,我的问题是无法在我的小部件模板中获取 MEDIA_URL,而表单使用 MySelectWidget 能够获取 MEDIA_URL 本身。
#
#plus_sign.html
#
<a href="" class="" id="id_{{ field }}">
<img src="{{ MEDIA_URL }}images/plus_sign.gif" width="10" height="10" alt="Add"/>
</a>
^ 无法将 {{ MEDIA_URL}} 加载到此小部件的模板中,因此我无法正确加载 .gif 图像。 :(
#
#custom_widgets.py
#
from django import forms
class MySelectMultiple(forms.SelectMultiple):
def render(self, name, *args, **kwargs):
html = super(MySelectMultiple, self).render(name, *args, **kwargs)
plus = render_to_string("plus_sign.html", {'field': name})
return html+plus
#
#forms.py
#
from django import forms
from myapp.custom_widgets.py import MySelectMultiple
class MyForm(forms.ModelForm):
contacts = forms.ModelMultipleChoiceField(Contact.objects, required=False, widget=MySelectMultiple)
#
#views.py
#
def AddContacts(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
new = form.save()
return HttpResponseRedirect('/addedContact/')
else:
form = MyForm()
return render_to_response('shop/my_form.html', {'form': form}, context_instance=RequestContext(request))
#
#my_form.html
#
{% extends "base.html" %}
{% block content %}
{{ form.contacts }}
{% endblock %}
请告诉我如何正确加载小部件的图像。非常感谢大家的回复。
【问题讨论】:
标签: django forms templates media