2016-03-18 16 views
0

Während in meinem Blog Hinzufügen Post, war ich die folgenden Fehler Post matching query does not exist. bekomme ich all Slug Felder vor kurzem geändert, aber dies wird nicht erzählt, daß ichdjango Beitrag passende Abfrage nicht existiert

URL.py

glaube
url(r'^$', views.PostListView.as_view(),name='home'), 
url(r'^(?P<slug>[\w-]+)/$', views.detail, name='detail'), 
url(r'^editPost/(?P<slug>[\w-]+)/$', views.edit_post, name='edit_post'), 
url(r'^deletePost/(?P<slug>[\w-]+)/$', views.delete_post, name='delete_post'), 
url(r'^addPost/$', views.add_post, name='add_post'), 

views.py

def detail(request, slug): 
    post = Post.objects.get(slug=slug) 
    comments=post.comment_set.all() 
    forms=CommentForm 
    if request.method == 'POST': 
     form=CommentForm(request.POST) 
     if form.is_valid(): 
      comment = form.save(commit=False) 
      comment.title = post 
      print comment 
      comment.save() 
     else: 
      print form.errors 
    else: 
     form = PostForm() 

    return render(request, "blog_detail.html", {'forms':forms,'post': post,'comments':comments}) 

def add_post(request): 
    forms = PostForm 
    if request.method == 'POST': 
     form = PostForm(request.POST) 
     print form 
     if form.is_valid(): 
      uncommit = form.save(commit=False) 
      title= form.cleaned_data['title'] 
      description=form.cleaned_data['description'] 
      form.save() 
      return redirect("home") 
     else: 
      print form.errors 
    else: 
     form = PostForm() 
    return render(request, "add_post.html", {'forms': forms}) 

Der folgende Fehler wird generiert, wenn ich auf Add Option. Vorlage für add_post

add_post.html

{% block blog_post %} 
    <form method="POST" action="{% url 'add_post' %}">{% csrf_token %} 
     {{ forms|crispy }} 
     <input type="submit"> 
    </form> 


{% endblock %} 

Traceback

Internal Server Error: /addPost/ 
Traceback (most recent call last): 
    File "/home/amogh/PycharmProjects/interview/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/home/amogh/PycharmProjects/interview/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/amogh/PycharmProjects/interview/main_app/blog/views.py", line 40, in detail 
    post = Post.objects.get(slug=slug) 
    File "/home/amogh/PycharmProjects/interview/venv/local/lib/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/home/amogh/PycharmProjects/interview/venv/local/lib/python2.7/site-packages/django/db/models/query.py", line 387, in get 
    self.model._meta.object_name 
DoesNotExist: Post matching query does not exist. 

Im wirklich nicht sicher, was ist falsch, wie Abfrage nicht existiert ... jede Hilfe ist willkommen ... Vielen Dank im Voraus

+0

Überprüfen Sie, ob Sie ein Post-Objekt mit dem angegebenen Slug – Gocht

+2

haben können Sie die Frage mit Ihrem StackTrace bearbeiten? Können Sie in Ihrer Django-Shell 'Post.objects.get (slug = slug)' 'machen und ein Post-Objekt erfolgreich erhalten? – karthikr

Antwort

2

Wenn Django die URL-Muster durchsucht, wählt es das erste übereinstimmende Muster aus. Im Moment wird /addPost/ von der Detailansicht behandelt, was zu einem Fehler führt, weil Sie keinen Post mit der addPost haben.

Sie können dies beheben, indem Sie das URL-Muster detail an den unteren Rand der Liste verschieben.

Verwandte Themen