2017-08-03 9 views
0

私の問題に関連する記事がいくつかあります。しかし、どれも次の問題を解決していないようにみえ:Django:reverse()にargs/kwargsが指定されたビューが見つかりません

私はmyappに/ urls.py内のURL定義されています:myappに/ views.pyで

app_name = "myapp" 
urlpatterns=[ 
    url(r'^$', views.index, name="index"), 
    url(r'^adduser/$', views.addUser, name="adduser"), 
    ] 

と、対応するビュー:

def index(request, status_msg=None, error_msg=None): 
    return HttpResponse(render(request, "myapp/index.html", 
           context={"error_message":error_msg, "status_message":status_msg})) 

def addUser(request): 
    try: 
     uname=request.POST["user_name"] 
    except KeyError: 
     url = reverse("myapp:index", args=(None, "No user name specified.")) 
     return HttpResponseRedirect(url) 
    # ... adding user to db ... 
    url = reverse("myapp:index", args=("Added user '%s'"%uname,)) 
    return HttpResponseRedirect(url) 

のいずれかをアドユーザー()でリダイレクトから()インデックスに引数を渡すの変形は

Reverse for 'index' with arguments '(None, u'No user name specified.')' not found. 1 pattern(s) tried: [u'myapp/$'] 

は、私は、D種類のエラーを生成します私がここで間違っていることを得ることはできません。インデックスビューが検出されたものの、認識されていないため、要求を無視することができますか?

argsの代わりにkwargsを使用しても役に立ちません。

どのような提案も高く評価されています。すでにありがとう!

+1

ただし、インデックスURL *には引数はありません*。なぜあなたはいくつかを渡そうとしているのですか? –

+1

(そしてそれがあったとしても、「指定されたユーザー名はありません」は、URLに渡すものではありません。) –

+0

ここでは誤解があるようです。したがって、urlでキャプチャされていなければ、argsやkwargsをビューに渡すことはできません。 – Leolo

答えて

1

あなたのURLは引数(正規表現内のキャプチャされたグループ)をサポートしていないようです。したがって、あなただけの使用する必要があります。

reverse("myapp:index") 

reverse()機能hereのためのドキュメントを確認してください。

+0

提案していただきありがとうございます。その後、どのようにメッセージをインデックスに戻してインデックスに追加しますか? – Leolo

+2

1つの方法は、[messages framework](https://docs.djangoproject.com/en/dev/ref/contrib/messages/)を使用することです。 –

+0

私はそれを見ていきます。ありがとう! – Leolo

関連する問題