我正在尝试渲染一个表单,根据从视图传递到表单的参数动态初始化多个字段。 我在表单的 init 方法中设置初始值,并且只要考虑将值分配给字段元素,它似乎工作正常。 当我打印表单时,我可以看到附加到相应字段元素的那些值。 问题是这些值在渲染时不会显示。
我的观点是:
def zoneinfo(request):
siteId = request.GET.get('siteId')
form = PostForm(site = siteId.upper())
print form
return render(request, 'details.html', {'form': form})
form.py中的代码
def __init__(self, *args, **kwargs):
siteId = kwargs.pop('site', None)
super(PostForm, self).__init__(*args, **kwargs)
if siteId:
siteInfo = getSiteInfo(siteId.upper())
self.fields['city'] = forms.CharField(max_length=25, initial=siteInfo['city'])
self.fields['address'] = forms.CharField(max_length=25, initial=siteInfo['address'])
self.fields['state'] = forms.CharField(max_length=50, initial=siteInfo['state'])
self.fields['zip'] = forms.CharField(max_length=10, initial=siteInfo['zip'])
details.html:
{% load staticfiles %}
<form action = "/zones/add" id="addNewZoneForm1" method='post'>{% csrf_token %}
<!-- <form id="addNewSite" method='post'>{% csrf_token %} -->
<fieldset>
<table border="0" cellspacing="2" cellpadding="2" width="100%">
{{ form.as_table }}
<!-- Allow form submission with keyboard without duplicating the dialog button -->
</table>
<input type="submit" value="Submit">
</fieldset>
</form>
<script type="text/javascript">
function getSite(value){
$.ajax({
url: "sites/getinfo?siteId="+value,
type: "get",
})
}
</script>
打印表单返回:
<tr><th><label for="id_site">Site:</label></th><td><select id="id_site" name="site" onChange="getSite(this.value);">
<option value="initialValue">----Select Site----</option>
<option value="abc">ABC</option>
<option value="xyz">XYZ</option>
</select></td></tr>
<tr><th><label for="id_city">City:</label></th><td><input id="id_city" maxlength="25" name="city" type="text" value="SAN" /></td></tr>
<tr><th><label for="id_address">Address:</label></th><td><input id="id_address" maxlength="25" name="address" type="text" value="SAN" /></td></tr>
<tr><th><label for="id_state">State:</label></th><td><input id="id_state" maxlength="50" name="state" type="text" value="SAN" /></td></tr>
<tr><th><label for="id_zip">Zip:</label></th><td><input id="id_zip" maxlength="10" name="zip" type="text" value="10000001" /></td></tr>
<tr><th><label for="id_description">Description:</label></th><td><textarea cols="40" id="id_description" name="description" rows="10">
</textarea></td></tr>
我们可以在html输出中看到这些字段具有关联的值,但它们不会在视图中呈现。 我没有收到任何错误,只是一个空字段的表单
编辑:我厌倦了在控制台上打印返回render(request, 'details.html', {'form': form})
,输出中包含字段的值。不确定为什么这些值在网页上不可见。
提前感谢您的帮助
答案 0 :(得分:0)
修改了getSite代码,它完全符合我的要求
<script type="text/javascript">
function getSite(value){
$.ajax({
url: "/zones/info?siteId="+value,
type: "get",
success: function(data){
$( "#content" ).html(data);
}
})
}
</script>