簡體   English   中英

Django網址未解析查詢參數

[英]Django Url Not Resolving with Query Parameters

我有一個問題,我需要為GET請求傳遞查詢參數,但是Django無法將URL正確解析為視圖。

我的urls.py看起來像這樣:

   from django.conf.urls.defaults import * 
   urlpatterns = patterns('',
       url(r'^confirm_cancel',
          'myapp.views.confirm_cancel_method',
           name='myapp_confirm_cancel'),
       )

當我轉到/ confirm_cancel?some_id = x時,我得到404,告訴我“沒有與查詢匹配的MyModel”。 當我在視圖處理程序中設置斷點時,轉到該URL時不會命中該斷點。

但是,如果我轉到/ confirm_cancel / x /,則視圖斷點確實會命中。

還有一點要注意,它在Django 1.1中有效,但是自從我升級到1.2以來,現在已失效。

有什么想法嗎?

謝謝!

我認為問題不在於您的網址。 您是否在視圖中的某處使用諸如get_object_or_4o4類的快捷方式? 例如:

get_object_or_404(MyModel, pk=99)

如果您的表中沒有主鍵為99的記錄,則會導致“沒有MyModel與給定查詢匹配”。

我們需要查看相應的視圖函數中的內容。

理想情況下,它應該看起來像這樣:

def confirm_cancel_method(request, some_id=None):
    some_id = request.REQUEST.get('some_id', some_id)
    some_record = get_object_or_404(SomeModel, pk=some_id)
    ...

更新

抱歉,剛剛看到您關於斷點的注釋。 我建議的一件事是將配置更改為此:

from django.conf.urls.defaults import * 
urlpatterns = patterns('',
    url(r'^confirm_cancel/?$',
       'myapp.views.confirm_cancel_method',
        name='myapp_confirm_cancel'),
    )

在末尾添加/?$意味着只有/confirm_cancel/confirm_cancel/將與該網址匹配。 現在,因為您沒有結尾$所有以confirm_cancel開頭的內容都將匹配。 修復模式至少可以解決此問題。

我在帖子中復制了urls.py中的所有其他URL模式。

原來的問題是我在urlpatterns頂部的其中一個網址中有一個r'^(?P<my_id>\\w+)/?$'

下次,我將學習粘貼所有內容,而不是挑選我認為是令人討厭的代碼行。

奇怪的是,這並沒有導致Django 1.1崩潰...我想這是在1.2中修復的錯誤

您是否檢查過是否出現斜杠

暫無
暫無

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

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