[英]how to make variable visible from other function in Django
I want to edit from json prepopulated modelform and try to populate form rows with user data from previous function but when insert eg last_name from model_from_json I'm getting error "global name 'last_name' is not defined". 我想从json预填充的modelform中进行编辑,并尝试使用来自先前函数的用户数据填充表单行,但是当从model_from_json插入例如last_name时,出现错误“未定义全局名称'last_name'”。 Otherwise,if I denote variable just as string 'last_name' view renders editable filled form row.
否则,如果我将变量表示为字符串'last_name',则视图将呈现可编辑的填充表格行。 So,please, how to make variable visible?
那么,如何使变量可见?
def model_from_json(request):
path = 'management/test.json'
with open(path,'r+') as json_file:
json_data = json_file.read()
json_dict = json.loads(json_data)
username = json_dict[0]['fields']['username']
first_name = json_dict[0]['fields']['first_name']
last_name = json_dict[0]['fields']['last_name']
date = json_dict[0]['fields']['last_login']
email = json_dict[0]['fields']['email']
form = UserDataForm({
'username':username ,
'last_name':last_name,
'first_name':first_name,
'date':date,
'email':email
})
form.save()
template = 'create.html'
return render_to_response(template, locals(),context_instance=RequestContext(request))
def form_edit(request, id=None, template_name='edit.html'):
if id:
username = get_object_or_404(User, pk=id)
if User.user != request.user:
return HttpResponseForbidden()
else:
username = User(username=request.user)
if request.POST:
form = UserDataForm(request.POST, instance=username)
if form.is_valid():
form.save()
message=messages.add_message(request, messages.SUCCESS,(''))
# If the save was successful, redirect to another page
redirect_url = reverse('index')
return HttpResponseRedirect(redirect_url)
else:
form = UserDataForm({'last_name':last_name})
return render_to_response('edit.html', {
'form': form,
}, context_instance=RequestContext(request))
将值保留到会话中
request.session["username"] = username
change your views like: 更改您的看法,例如:
if request.POST:
....
else:
form = UserDataForm(initial={'last_name':username.last_name})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.