2015-12-13 59 views
0

我一直試圖解決'NoReverse匹配'幾個小時。Django NoReverse匹配錯誤

錯誤:

NoReverseMatch at /myCourses/ 
Reverse for 'removeFromCurrentlyEnrolledList' with arguments '()' and keyword arguments '{'courseID': '15-122'}' not found. 1 pattern(s) tried: ['myCourses/removeFromCurrentlyEnrolledList/(?P<courseID>.....)$'] 
    Request Method: GET 
    Request URL: http://127.0.0.1:8000/myCourses/ 
    Django Version: 1.9 
    Exception Type: NoReverseMatch 
    Exception Value:  
    Reverse for 'removeFromCurrentlyEnrolledList' with arguments '()' and keyword arguments '{'courseID': '15-122'}' not found. 1 pattern(s) tried: ['myCourses/removeFromCurrentlyEnrolledList/(?P<courseID>.....)$'] 
    Exception Location: E:\00 CMU\15112\courseReview\myvenv\lib\site-packages\django\core\urlresolvers.py in _reverse_with_prefix, line 508 
    Python Executable: E:\00 CMU\15112\courseReview\myvenv\Scripts\python.exe 
    Python Version: 3.4.0 
    Python Path:  
    ['E:\\00 CMU\\15112\\courseReview', 
    'C:\\Windows\\system32\\python34.zip', 
    'D:\\01 SOFTWARES\\Python 3.4\\DLLs', 
    'D:\\01 SOFTWARES\\Python 3.4\\lib', 
    'D:\\01 SOFTWARES\\Python 3.4', 
    'E:\\00 CMU\\15112\\courseReview\\myvenv', 
    'E:\\00 CMU\\15112\\courseReview\\myvenv\\lib\\site-packages'] 
    Server time: Sat, 12 Dec 2015 21:22:06 -0500 

看起來它是能夠趕上傳遞給它的參數?但我不知道爲什麼它無法解決它。

我曾嘗試以下每個URL模式:

url(r'^myCourses/removeFromCurrentlyEnrolledList/(?P<courseID>.....)$', views.removeFromCurrentlyEnrolledList, name='removeFromCurrentlyEnrolledList'), 
url(r'^myCourses/removeFromCurrentlyEnrolledList/(?P<courseID>/d+)$', views.removeFromCurrentlyEnrolledList, name='removeFromCurrentlyEnrolledList'), 
url(r'^myCourses/removeFromCurrentlyEnrolledList/(?P<courseID>[0-9][0-9]-[0-9][0-9][0-9])$', views.removeFromCurrentlyEnrolledList, name='removeFromCurrentlyEnrolledList'), 

相關的HTML +模板

<h6><big>Courses Enrolled</big></h6> 
{% for item in currentList %} 
    <p>{{ item }}</p> <a href="{% url 'removeFromCurrentlyEnrolledList' courseID=item %}">R</a> 
{% endfor %} 

相關視圖

def removeFromCurrentlyEnrolledList(request, courseID): 
    userProfile = getAssociatedUserProfile(request.user.id) 
    userProfile.removeFromUserCurrentlyEnrolled(courseID) 
    return redirect('courseDirectory.views.myCourses') 

添加重新建立了新的屏幕截圖跟蹤只是爲了確保我不會丟失任何東西

Stack trace Screenshot

請幫忙。

謝謝。

回答

0

刪除所有三個的URLconf,並添加這個(使用\d+代替/d+):

url(r'^myCourses/removeFromCurrentlyEnrolledList/(?P<courseID>\d+)$', views.removeFromCurrentlyEnrolledList, name='removeFromCurrentlyEnrolledList'), 

,我不知道item是什麼,但它應該是一個ID item.id,而不是一個對象:

{% for item in currentList %} 
<p>{{ item }}</p> 
<a href="{% url 'removeFromCurrentlyEnrolledList' courseID=item.id %}">R</a> 
{% endfor %} 
+1

這沒有奏效......它能夠捕捉參數'courseID'(截圖中的'15 -122')。但嘗試1模式後模式匹配失敗。這很奇怪.....感謝您的幫助。 –