2016-05-23 3 views
0

私のブログに編集ビューを追加しましたので、私のアシスタントは管理領域ではなくフロントエンドから編集できます。最後に/edit/属性を除いて、post_editのURL設定がpost_detailと同じです。投稿を確認していて、手動でURL末尾に/edit/を追加すると効果的ですが、編集ボタンとパラメータを渡す際に問題が発生しています。Django NoReverseMatch on post_edit URL

これは、ブラウザのエラーである:プレス/ 2016/05/23/gdfgdfcdcd /は 引数 '(2016、5、23、 'gdfgdfcdcd')' と 'post_edit' のリバース/ AT

NoReverseMatchキーワード引数 '{}'が見つかりません。 1つのパターンが試された:['/(?P \ d {4})/(?P \ d {2})/(?P \ d {2})/(?P [ - \ w] + )/ edit/$ ']

ありがとうございます。

URL

urlpatterns = [ 
    ... 
    url(r'^press/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<post>[-\w]+)/$', views.post_detail, name='post_detail'), 
    url(r'^press/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<post>[-\w]+)/edit/$', views.post_edit, name='post_edit'), 
    ... 
] 

ビュー

def post_edit(request, year, month, day, post): 
    post = get_object_or_404(Post, slug=post, status='published', created__year=year, created__month=month, created__day=day) 
    if request.method == "POST": 
     form = PostForm(request.POST, instance=post) 
     if form.is_valid(): 
      post = form.save(commit=False) 
      form.save() 
      form.save_m2m() 
      return HttpResponseRedirect(post.get_absolute_url()) 
    else: 
     form = PostForm(instance=post) 
    return render(request, 'press/post_edit.html', {'post': post, 'form': form}) 

テンプレートURLで

<a href="{% url 'press:post_edit' post.created.year post.created.month post.created.day post.slug %}"><i class="fa fa-envelope-o" aria-hidden="true"></i> Edit Post</a> 
+0

エラーメッセージは、使用されている 'post_edit'パターンを示しています...最後に'/edit/'が表示されているので、私は仮定します。パラメータを持つ唯一の2つのURLパターンが含まれています。 –

答えて

1

それは期待しているので、あなたの正規表現が一致していませんその月のちょうど2桁ですが、あなたは1つ( '5')だけを渡しています。月と日の両方のパラメータが1桁または2桁のいずれかを受け入れるようにする必要があります。

r'^press/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})... 
+0

毎日何か新しいことを学ぶ...ありがとうございます! –

1

にあなたは入れなかった{2}日のためにあなたがそれらそれぞれがとても良く、{1,2}に変更し、正確に間違っていた有効であるために2進文字である必要があることを意味D月パラメータ:

urlpatterns = [ 
    ... 
    url(r'^press/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<post>[-\w]+)/$', views.post_detail, name='post_detail'), 
    url(r'^press/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<post>[-\w]+)/edit/$', views.post_edit, name='post_edit'), 
    ... 
]