2017-08-09 22 views
-1

私はNoReverseMatchAPPEND_SLASHの2つの問題に直面しています。Django NoReverseMatchとPOST URLエラー

問題#1。 APPEND_SLASH

Detail.html

<form action="update-entry" method="post"> 
/* if I add '/' at the end of update-entry, it works fine. */ 
{% csrf_token %} 
{{ form }} 
<input type="submit" value="Edit"> 
</form> 

[編集]ボタンをIをクリックすると、私は以下のエラーを取得し、

You called this URL via POST, but the URL doesn't end in a slash and you have 
APPEND_SLASH set. Django can't redirect to the slash URL while maintaining 
POST data. Change your form to point to 127.0.0.1:8000/genericviews/1/update- 
entry/ (note the trailing slash), or set APPEND_SLASH=False in your Django 
settings. 

これは、生成されたURLです:

http://127.0.0.1:8000/genericviews/1/update-entry

I知っているURLは '/'で終わるべきです。 URLは、末尾に '/' を生成していない理由を

urlpatterns = [ 

url(r'^$', views.IndexView.as_view(), name='index'), 
url(r'^(?P<pk>[0-9]+)/$', views.DetailsView.as_view(), name='detail'), 
url(r'^makeentry$', views.makeentry, name='makeentry'), 
url(r'^static/$', views.StaticView.as_view()), 


url(r'^new-entry/$', views.MakeEntryView.as_view(), name='new-entry'), 

url(r'^(?P<pk>[0-9]+)/update-entry/$', views.UpdateEntryView.as_view(), name='update-entry'), 


] 

urls.pyは私の混乱があります。上記のURLパターンは正しいと思われます。

問題#2 NoReverseMatch

私はハードコードされたURLを変更しようとすると、私は以下のエラーを取得し、

NoReverseMatch at /genericviews/1/ 
Reverse for 'update-entry' with arguments '()' and keyword arguments '{}' 
not found. 1 pattern(s) tried: ['genericviews/(?P<pk>[0-9]+)/update- 
entry/$'] 

Detail.html

<form action="{% url 'genericviews:update-entry' %}" method="post"> 
{% csrf_token %} 
{{ form }} 
<input type="submit" value="Delete Product"> 
</form> 

は、同様

をリンクを試してみました
{#<a href="{% url 'genericviews:update-entry' %}">Edit</a>#} 

http://127.0.0.1:8000/genericviews/の項目をクリックすると、 というURLに移動します。ここにはエラーが表示されます。

他の回答を確認しても動作しませんでした。

ご協力いただければ幸いです。

+0

'settings.py'ファイルに設定された' APPEND_SLASH'真 –

+0

に最初の研究は、あなたの質問が、あなたは、別の質問として、各問題を提起すべきです、逆反復のエラー(おそらくこの1つ)のために複数の重複があります – Sayse

+0

「ガイドしてください」と言うのではなく、慎重であると思われる場合は、「お時間をいただきありがとうございます」または「感謝。" – marcusshep

答えて

2

あなたがそれを求めていないので、スラッシュを追加していません。 "update-entry"の相対URLをハードコーディングしていますので、それを使用します。

urlタグを試してみると、そのURLを生成するために必要な引数が渡されていないため、エラーが発生します。あなたがobjectとしてテンプレートコンテキストでオブジェクトを持っていると仮定すると、あなたはどうなる:

{% url 'genericviews:update-entry' pk=object.pk %} 
+0

上記のURLを変更しようとしましたが、動作しません。 – PRK

+0

エラー:引数 '()'およびキーワード引数 '{' pk ':1}'が見つからないため、 'update-entry'を逆にします。 0個のパターンが試されました:[] – PRK

+0

これで、 'genericviews:'名前空間接頭辞が欠落してしまったためです。その部分は以前は間違っていなかった。 –