У меня есть мнение Джанго, который выглядит как ...Джанго код вида функции запускается после возвращения
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.
render_to_response обычно занимает RequestContext в качестве ключевого слова аргумента, называемого "context_instance", т.е. render_to_response ("mytemplate.html", контекста, context_instance = RequestContext (запрос)) Но я не сразу понимаю, как это может повлиять исполнение вашего кода ... –