擅长:python、mysql、java
<p><a href="https://docs.djangoproject.com/en/1.9/topics/db/transactions/#tying-transactions-to-http-requests" rel="noreferrer">Atomicity Documentation</a></p>
<p>总而言之,<code>@transaction.atomic</code>将在数据库上执行一个事务,如果您的视图生成一个没有错误的响应。因为您自己正在捕捉异常,所以在Django看来,您的视图执行得很好。</p>
<p>如果捕捉到异常,则需要自己处理:<a href="https://docs.djangoproject.com/en/1.9/topics/db/transactions/#controlling-transactions-explicitly" rel="noreferrer">Controlling Transactions</a></p>
<p>如果在失败时需要生成正确的json响应:</p>
<pre><code>from django.db import SomeError, transaction
def viewfunc(request):
do_something()
try:
with transaction.atomic():
thing_that_might_fail()
except SomeError:
handle_exception()
render_response()
</code></pre>