2017-08-14 52 views
0

在我/templates/app02/urls.pyNoReverseMatch在/ app02/user_delete-5/

urlpatterns = [ 
    ... 
    url(r'^userinfo/', views.userinfo), 
    url(r'^user_delete-(?P<nid>\d+)/', views.user_delete), 
] 

/app02/views.py

def userinfo(request): 

    if request.method == 'GET': 

     # QuerySet 
     user_list = models.UserInfo.objects.all() 

     return render(request, 'app02/userinfo.html', {'user_list':user_list}) 
    elif request.method == 'POST': 
     u = request.POST.get('username') 
     p = request.POST.get('password') 
     models.UserInfo.objects.create(
      username=u, 
      password=p 
     ) 
     print ('before redirect') 
     return redirect('/app02/userinfo/') 

def user_delete(request, nid): 
    models.UserInfo.objects.filter(id=nid).delete() 
    return redirect(request, '/app02/userinfo/') 

這是模板代碼:

<ul> 
     {% for row in user_list %} 
     <li> 
      <a href="/app02/user_detail-{{row.id}}/">{{ row.username }} </a> | 
      <a href="/app02/user_delete-{{row.id}}/">delete</a> 
     </li> 
     {% endfor %} 
    </ul> 

但刪除瀏覽器中的項目後, 我在瀏覽器中得到以下錯誤:

NoReverseMatch在/ app02/user_delete-5/

請注意數據刪除成功,但瀏覽器獲得誤差,但沒有重定向到/app02/userinfo/。(見我user_delete方法/app02/views.py) 而在瀏覽器地址欄中的url是:http://localhost:8000/app02/user_delete-4/


編輯

完整回溯:

NoReverseMatch at /app02/user_delete-4/ 
Reverse for '<WSGIRequest: GET '/app02/user_delete-4/'>' not found. '<WSGIRequest: GET '/app02/user_delete-4/'>' is not a valid view function or pattern name. 
Request Method: GET 
Request URL: http://localhost:8000/app02/user_delete-4/ 
Django Version: 1.11.2 
Exception Type: NoReverseMatch 
Exception Value:  
Reverse for '<WSGIRequest: GET '/app02/user_delete-4/'>' not found. '<WSGIRequest: GET '/app02/user_delete-4/'>' is not a valid view function or pattern name. 
Exception Location: /Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/urls/resolvers.py in _reverse_with_prefix, line 497 
Python Executable: /usr/bin/python 
Python Version: 2.7.10 
Python Path:  
['/Users/luowensheng/Desktop/TestIOS/TestPython/pyProject', 
'/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg', 
'/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/Library/Python/2.7/site-packages', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC'] 
Server time: Mon, 14 Aug 2017 04:27:10 +0000 
+0

請張貼整個回溯。 –

+0

@BurhanKhalid見我的編輯。 – 244boy

回答

0

你的問題是在這裏:

return redirect(request, '/app02/userinfo/') 

redirect不採取request作爲參數。它試圖找到一個URL來匹配request對象的字符串表示形式,即"<WSGIRequest: GET '/app02/user_delete-4/'>",當然這會失敗,因爲您沒有這樣的模式。

所以,簡單地從電話中刪除request

return redirect('/app02/userinfo/')