[英]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.