1

djangoの編集リンクにアクセスしようとしたときにエラーが発生しました。ここでスタックオーバーフローが発生しましたが、私の場合は解決する解決策が見つかりませんでした。引数 '(9、)'およびキーワード引数 '{}'が見つからない場合は、 'edit'を逆にします。 0個のパターンが試されました:[]

エラー: 例外タイプ:NoReverseMatch 例外値:引数 '(9、)'およびキーワード引数 '{}'を使用して '編集'を無効にします。 0個のパターンが試されました:[]引数 '{}'が見つかりません。 []

これはあなたが使用する必要が私のurls.py

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

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^create/$', views.create, name='create'), 
    url(r'^(?P<id>\d+)/$', views.show_post, name = 'show_post'), 
    url(r'^(?P<id>\d+)/edit/$', views.update_post, name = 'update_post'), 
    url(r'^(?P<id>\d+)/delete/$', views.delete_post), 
] 

views.py

from django.contrib import messages 
from django.shortcuts import render, get_object_or_404, redirect 
from django.http import HttpResponse, HttpResponseRedirect 

from .forms import PostForm 
from .models import Post 

# Create your views here. 

def index(request): 
    post_list = Post.objects.order_by('-created_date')[:10] 
    context = {'post_list': post_list} 
    return render(request, 'index.html', context) 

def create(request): 
    form = PostForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     #flass messages 
     messages.success(request, "Successfully created") 
     return HttpResponseRedirect(instance.get_absolute_url()) 


    context = { 
     "form":form, 
    } 
    return render(request, 'post_form.html', context) 


def show_post(request, id=None): 
    instance = get_object_or_404(Post, id=id) 
    context = {'instance': instance} 
    return render(request, 'show_post.html', context) 


def update_post(request, id=None): 
    instance = get_object_or_404(Post, id=id) 
    form = PostForm(request.POST or None, instance=instance) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     messages.success(request, "Post updated") 
     return HttpResponseRedirect(instance.get_absolute_url()) 
    context = { 
     "form":form, 
     "instance":instance 
    } 
    return render(request, 'post_form.html', context) 


def delete_post(request, id=None): 
    instance = get_object_or_404(Post, id=id) 
    instance.delete() 
    messages.success(request, "Successfully deleted") 
    return redirect("posts:index") 

show_post.html

{% extends "base.html" %} 

<div class="container"> 
{% block content %} 
    <h1> {{instance.title}} </h1> 
    <h3>{{instance.content| linebreaks}} </h3> 
    <a href="{% url 'posts:index' %}"> Home</a> | <a href="{{instance.url}}" target="_blank" > visit url</a> | 
    <a href="{% url 'posts:update_post' %}"> Edit</a> 

{% endblock %} 

</div> 
+1

あなたの 'urls.py'は' name = 'edit''というURLを持っていません。 –

+0

URLの名前をname = 'update_post'からname = 'edit'に変更しましたが、まだエラーが表示されます。 – helloworld

+0

@wemodeあなたは逆にする必要があります.'shl_post.html_ –

答えて

3

です:0のパターン(複数可)試してみました名前空間。 'edit'ではなく、'posts:edit'を使用してください。

または'posts:update_post'あなたがurls.pyで使用している名前によって異なります。

関連する問題

 関連する問題