我有一个页面,显示登录用户可以用来编辑其配置文件的表单。Django:如何访问模板中的模型字段数据
用户第一次加载相应视图时,通过GET请求,表单应显示用户现有配置文件记录的值。
因为我希望对用于表单字段的标记进行细化控制,所以我只想检索字段值,并手动编写必要的输入元素标记,插入检索的字段值作为输入元素''value'属性(而不是让django渲染整个输入元素)。
到目前为止,我一直试图在我的模板中使用像{{form.myfield.data}}这样的指令来访问字段数据,但这是返回“无”,而不是我期望的配置文件细节。
如果用户刚刚发布了有效表单,表单字段确实包含预期的配置文件详细信息。
我希望有人能帮助我理解我在做什么错在这里:
这是我的观点:
@login_required
def edit(request):
# get logged-in user's profile
obj=Profile.objects.get(user=request.user)
if request.method == 'POST': # If the form has been submitted...
form = ProfileForm(request.POST, request.FILES, instance=obj)
if form.is_valid(): # All validation rules pass
form.save()
request.flash['success'] = "Your profile has been updated." # Puts a string to the flash scope
else:
request.flash['error'] = 'Please correct the problems below and try again' # Puts a string to the flash scope
else:
# if no form was submitted
# derive the form data from the logged-in users existing profile
form = ProfileForm(instance=obj)
return render_to_response('app_profile/edit.html',
{
'form': form,
'user': request.user,
'ancestor_urls': ['app_profile.views.edit',],
},context_instance=RequestContext(request)
)
下面是从相应的模板的摘录。该输入元素处理一个名为'display_name'的字段。
<input type="text"
class="textInput large {% if form.display_name.errors %}error{% endif %}"
maxlength="50"
size="35"
value="{{ form.display_name.data }}"
id="id_display_name"
name="display_name">
谢谢。我觉得编写自定义小部件是便于维护的最佳选择。我现在遇到的问题是了解如何从自定义小部件代码中访问字段的错误对象。 – bitbutter 2010-07-09 09:54:20
错误将由表单字段的验证功能设置。小部件是标记和css,表单域是逻辑。你可以写两个。 – 2010-07-09 17:52:39