首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django原子请求是如何工作的?

Django原子请求是如何工作的?
EN

Stack Overflow用户
提问于 2014-12-07 10:10:59
回答 1查看 10.8K关注 0票数 22

我希望我的Django视图是原子的。我的意思是,如果视图中有2DB写,我想要0写或者2写。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def test_view(request):
    ''' A test view from views.py '''

    MyClass.objects.create()
    raise Exception("whatever")
    MyClass.objects.create()

我在文档中发现的似乎是有希望的:

在web上处理事务的一个常见方法是将每个请求包装在一个事务中。在要为其启用此行为的每个数据库的配置中,将ATOMIC_REQUESTS设置为True。 它是这样工作的。在调用视图函数之前,Django启动一个事务。如果生成的响应没有问题,Django将提交事务。如果视图产生异常,Django将回滚事务。

但是,即使我设置了ATOMIC_REQUESTS = True,在调用test_view()时,也会创建第一个MyClass对象!我遗漏了什么?

注:我使用Django 1.7

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-07 10:30:38

ATOMIC_REQUESTS是数据库连接设置dict的一个属性,而不是顶级设置.因此,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True,
    }
}
票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27346003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文