В функции просмотра Django, которая использует фиксацию транзакций вручную, у меня есть:
context = RequestContext(request, data)
transaction.commit()
return render_to_response('basic.html', data, context) # Returns a Django ``HttpResponse`` object which is similar to a dictionary.
Я думаю, что лучше сделать это:
context = RequestContext(request, data)
response = render_to_response('basic.html', data, context)
transaction.commit()
return response
Если страница отображается неправильно во второй версии, транзакция откатывается. Похоже, это логичный способ сделать это, хотя, скорее всего, в этот момент функции не будет много исключений, когда приложение находится в рабочем состоянии.
Но ... я боюсь, что это может стоить дороже, и это будет переполнено рядом функций, поскольку приложение перегружено пользовательской обработкой транзакций, поэтому сейчас самое время это выяснить.
Если экземпляр HttpResponse уже находится в памяти (в точке render_to_response()
), то сколько стоит другая ссылка? Когда функция завершается, разве ссылка (переменная response
) не исчезает, так что, когда Django завершит преобразование HttpResponse
в строку для вывода, Python может сразу же собрать ее?
Есть ли причина, по которой я бы хотел использовать первую версию (кроме «Это на 1 строку кода меньше»)?