django视图函数返回后运行的代码
我有一个django视图,看起来像...
def add_user(request): if User.objects.get(username__exact = request.POST['username']): context = { 'message': "Username already taken"} return render_to_response("mytemplate.html", context, RequestContext(request)) newUser = User(username="freeandclearusername") newUser.save() #then other code that is related to setting up a new user.
即使初始条件语句失败并且调用“return render_to_response()”,与设置用户相关的其他代码仍会运行。
使用正确的上下文呈现页面,但在初始返回后将其他信息添加到数据库。 我认为“return render_to_response()”之后的代码不会运行。
任何人都可以确认或解释这个?
UPDATE ....
好的,如果我添加一个条件....
def add_user(request):
if User.objects.get(username__exact = request.POST['username']):
bad_user = True
context = { 'message': "Username already taken"}
return render_to_response("mytemplate.html", context, RequestContext(request))
newUser = User(username="freeandclearusername")
newUser.save()
if bad_user != True:
#then other code that is related to setting up a new user.
context = { 'message': "Username is great!!!!!"}
return render_to_response("mytemplate.html", context, RequestContext(request))
这表现如预期。 此外,如果我删除RequestConext(),它似乎也正确行事。
有任何想法吗? 我认为问题在于我如何使用RequestContext。
return语句确实会终止函数。 所以如果你看到其他代码被执行,你也是
你是对的,假设你的条件得到满足,视图将退出你的返回声明。 我能想到的唯一的其他事情还没有被提及是缩进 - 仔细检查你没有混合的制表符和空格。 这有时会导致意外情况。
链接地址: http://www.djcxy.com/p/56503.html