簡體   English   中英

Django Admin在模型編輯中間歇性地返回404

[英]Django Admin Intermittently Returning 404 On Model Edit

我們使用Django Admin來維護一些導出到我們網站的數據。 有時,當點擊標准更改列表視圖以獲取模型編輯表單而不是路由到正確的頁面時,我們將獲得Django 404頁面/模板。

它發生在某種程度上有點不合時宜,我們可以通過重新加載三次來重現它:

  • 第一個F5:404
  • 第二場F5:404
  • 第三個F5:正確加載對象更改表單

但最近它經常返回404而不是。 當我們反彈apache(優雅地)並且隨着更多請求變得更糟(再次,似乎)時,它似乎降低了返回404的幾率。

在Fast-CGI / MySQL 5.1.x上運行Django 1.2.1

FWIW,我無法在我的VM上重現問題,但我在那里運行mod_wsgi並在設置中設置了Debug = True。 否則代碼和數據庫是相同的。

我有同樣的問題。 我的解決方案是將我對admin.site.register()調用移至admin.py 如果將DEBUG設置為false,則會延遲加載模型,因此不會始終進行注冊調用。 顯然, admin.py始終在初始時加載。

直到上周我才遇到同樣的問題。 在我跟蹤這個錯誤幾個月后,我發現404在django源代碼中提升。

我修改了ModuleAdmin類的文件/path/to/django/contrib/admin/options.py get_object()方法。 注意:我使用Django 1.3.1

不知怎的,django在queryset中找不到pk object_id的對象。 所以我修改它像這樣:

def get_object(self, request, object_id):
    ....
    queryset = self.queryset(request)
    model = queryset.model
    obj = None

    #first search the object with original way
    try:
        object_id = model._meta.pk.to_python(object_id)
        obj = queryset.get(pk=object_id)
    except:
        #print "DEBUG: > first try does not exist (%s)" % str(object_id)
        obj = None

    if obj is None: 
        #if object doesn't exist in queryset, search in db
        try:
            object_id = model._meta.pk.to_python(object_id)
            obj = model.objects.get(pk=object_id)
            #print "DEBUG: > second try found %s" % str(obj)
        except (model.DoesNotExist, ValidationError):
            #print "DEBUG: > second try does not exist"
            obj = None
    return obj

我知道在django的源代碼中更改某些內容並不是一件好事,因此請自擔風險!

查看最后的備用WSGI腳本:

http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

有所作為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM