2016-04-05 18 views
0

Kullanıcıların yeni tartışma konuları gönderebileceği bir form oluşturmak için çalışıyorum ancak bir form gönderildiğinde her Django aşağıdaki hatayı dışarı spews:Python Django: Hayır Ters Maçın en/StartThread/

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

İşte benim views.py geçerli:

@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)) 

Ve işte benim urls.py geçerli:

from django.conf.urls import url, patterns, include 
from django.contrib import admin 
from . import views 

admin.autodiscover() 

    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'), 
     url(r'^tinymce/', include('tinymce.urls')) 
    ] 
+0

Eğer tüm gösterebilir misin:

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')) ] 

Ve reverse() bir slug argüman olması gerekir senin "urls.py" mi? – alecxe

+0

@alexce urls.py –

+0

Eklendi Ama 'post_detail' adı için bir 'url' tanımlı değil, değil mi? – alecxe

cevap

1

Sen yapamaz post_detail son nokta için tanımlanan bir URL ve view_post görünüme sahip:

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

Aslında blog_post_detail, ama yine de teşekkürler. –

İlgili konular