2016-12-22 42 views
0

我遇到了麻煩,當我使用slu for我的網址。它表示沒有帖子匹配查詢。Django slug鏈接編輯頁面未找到

在編輯和刪除頁面發生的麻煩,事實證明,細節頁面內仍然正常工作。

但奇怪的是404錯誤是由post.views.post_detail而不是post_update引發的。

我的網址後內部應用程序

urlpatterns = [ 

url(r'r^$', post_list, name='list'), 
url(r'^create/$', post_create, name='create'), 
url(r'^(?P<slg>[\w-]+)/$', post_detail, name='detail'), 
url(r'^(?P<slg>[\w-]+)/edit/$', post_update, name='update'), 
url(r'^(?P<slg>[\w-]+)/delete/$', post_delete), 

] 

意見

def post_detail(request, slg=None): 
    instance = get_object_or_404(Post, slg=slg) 
    context = { 
    "title":intance.title, 
    "instance":instance 
    } 
    return render(request, "post_detail.html", context) 

def post_update(request, slg=None): 
    instance = get_object_or_404(Post, slg=slg) 
    form = PostForm(request.POST or None, request.FILES or None, instance=instance) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     return HttpResponseRedirect(instance.get_absolute_url()) 
    context = { 
     "title":instance.title, 
     "instance":instance, 
     "form", form, 
    } 
    return render(request, "post_form.html", context) 

的get_absolute_url功能也已經返回SLG。 唯一的問題是在編輯頁面中找不到帖子,甚至slg標題都與當前可用帖子匹配。

System check identified no issues (0 silenced). 
December 23, 2016 - 17:52:00 
Django version 1.9.7, using settings 'blog.settings' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 
Not Found: /hahaha/edit/ 
[23/Dec/2016 17:52:08] "GET /hahaha/edit/ HTTP/1.1" 404 1725 

這就像post_update函數不會執行。

什麼可能是錯誤的? 謝謝。

+2

那麼_this_就是你要開始在業餘時間做的,現在你的總統任期即將結束? –

+2

看起來你有幾個失蹤的'''。 – cwallenpoole

+0

請發表真實的代碼和完整的回溯 –

回答

2

您在網頁缺少單引號'。 URL模式應該是有效的str

url(r'r^$', post_list, name='list'), 
url(r'^create/$', post_create, name='create'), 
#   ^
url(r'^(?P<slg>[\w-]+)/$', post_detail, name='detail'), 
#      ^
url(r'^(?P<slg>[\w-]+)/edit/$', post_edit, name='edit'), 
#       ^
url(r'^(?P<slg>[\w-]+)/delete/$', post_delete), 
#       ^
+0

請原諒我,因爲我的錯字在問題中編寫代碼,非常感謝您的幫助,但我確信這並不會讓我感到困擾。我不知道,或者你知道我應該檢查的地方嗎? –