2016-04-05 2 views
0

で私は、ユーザーが新しいディスカッションスレッドを提出することができるフォームを作成しようとしていますが、フォームが送信されたときに毎回、Djangoは以下のエラーを吐き出す:PythonのDjangoの:いいえリバースマッチ/ startthread/

NoReverseMatch at /startthread/ 
Reverse for 'post_detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

は、ここに私のviews.pyです:

@user_passes_test(lambda u: u.is_authenticated) 
def add_post(request): 
    form = PostForm(request.POST or None) 

    if form.is_valid() and request.user.is_authenticated(): 
     try: 
      post = form.save(commit=False) 
      post.author = request.user 
      post.save() 
      return redirect(reverse(post)) 
     except IntegrityError as e: 
      pass 
    else: 
     print("INVALID") 
     print(form.errors) 

    return render_to_response('webapp/startthread.html', 
           { 'form': form }, 
           context_instance=RequestContext(request)) 

def view_post(request, slug): 
    post = get_object_or_404(Post, slug=slug) 
    form = CommentForm(request.POST or None) 
    if form.is_valid(): 
     comment = form.save(commit=False) 
     comment.post = post 
     comment.save() 
     request.session["name"] = comment.name 
     request.session["email"] = comment.email 
     request.session["website"] = comment.website 
     return redirect(request.path) 
    form.initial['name'] = request.session.get('name') 
    form.initial['email'] = request.session.get('email') 
    form.initial['website'] = request.session.get('website') 
    return render_to_response('webapp/threadlist.html', 
           { 
            'post': post, 
            'form': form, 
           }, 
           context_instance=RequestContext(request)) 

そして、ここで私のurls.pyです:

あなたが post_detailエンドポイントと view_postビュー用に定義されたURLはありません
+0

を、あなたはすべてを示すことができましたあなたの 'urls.py'? – alecxe

+0

@alexce urls.pyを追加しました –

+0

'post_detail'という名前の' url'は定義されていませんよね? – alecxe

答えて

1

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^register/$', views.register, name='register'), 
    url(r'^login/$', views.login, name='login'), 
    url(r'^logout/$', views.Logout, name='logout'), 
    url(r'^startthread/$', views.add_post, name='startthread'), 

    # ADDED 
    url(r'^thread/(?P<slug>[-\w]+)/$', views.view_post, name='post_detail'), 

    url(r'^tinymce/', include('tinymce.urls')) 
] 

をそしてreverse()slug引数持っている必要があります:

return redirect(reverse(post, kwargs={"slug": post.slug})) 
+0

実際にはblog_post_detailでしたが、とにかく感謝しています。 –

関連する問題