1

我最近更新到 django 1.4 并且一直在解决一些问题。

最近的是原子操作。

由于某种原因,当单击链接时,视图会被调用两次。这已通过开发服务器上的打印语句验证。

举个例子:

   def link_createNewNumber(self, request, obj=None):
      print "*** createNewNumber Called ***"
      number = numbers.objects.filter(id=obj)
      if len(number) == 1:
         print "Exists, just redirect to new page"
         # ResponseRedirect here...
      elif len(number) == 0:
         # Code to create new entry
         print "Saved new database entry"
         # ResponseRedirect here...

现在我偶然发现了一些交易,这似乎是我需要的。但是,即使在将事务中间件添加到 settings.py 之后:

...
'django.middleware.transaction.TransactionMiddleware',
...

和@transaction.commit_on_success 到函数的开始:

@transaction.commit_on_success
def link_createNewNumber(self, request, obj=None):
...

我经常得到以下输出(简化):

*** createNewNumber Called ***

*** createNewNumber Called ***

Saved new database entry

Saved new database entry

我很难过,因为这一切都可以在 1.2.3 中正常工作。问题的核心似乎是选择链接时的双重执行。

4

0 回答 0