2014-01-17 58 views
0

這裏不區分大小寫的結果是我的看法:Django的現場查找返回即使__exact

@csrf_exempt 
def api(request): 
    if request.method=="POST" and 'cmd' in request.POST and request.POST['cmd'] == "post": 
     try: 
      usr = Usr.objects.get(secret__exact=request.POST['secret']) 
      # .... 
      response = 'ok' 
     except Exception as ex: 
      response = 'fail' 

     return HttpResponse(response) 

的Django仍返回正確的對象,甚至有錯誤的祕密(例如,如果我通過更換一個「A」'一個祕密)。怎麼了?

+0

你是說''response'是_always_'確定嗎? – karthikr

+0

如果DB中的祕密是'A1b2C',即使發佈的祕密是'a1b2C',repsonse也可以。如果我發佈了'b1b2C' – user2302807

回答

1

它與數據庫的整理有關,特別是如果您使用的是MySQL。在這裏看到的文檔: https://docs.djangoproject.com/en/1.6/ref/models/querysets/#std:fieldlookup-exact

它說: 在MySQL中,數據庫表中的「整理」設置確定確切的比較是否區分大小寫。這是一個數據庫設置,而不是Django設置。

這意味着,它是數據庫中的設置,它決定了區分大小寫,而不是您在python中編寫的內容。

+0

的祕密,我的回覆失敗了很多,我沒有看到文檔中的提示! – user2302807