我有一个看起来像......的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。
答案 0 :(得分:1)
return语句确实会终止该函数。因此,如果您看到其他代码正在执行,您可以
答案 1 :(得分:0)
您是对的,假设您的条件得到满足,视图将在您的退货声明中退出。我还没有提到的另一件事就是缩进 - 仔细检查你没有标签和空格的混合。这有时会导致意外。