2016-06-30 10 views
0

簡単な質問を別のビューからビューをレンダリング、私はジャンゴとPyhtonのnoobだ...ジャンゴ、(特定のURLを呼び出す)

は、少なくとも私は思いますそう:

<form action="#" method="post"> 
    {% csrf_token %} 
    <label>Company Number:</label> 
    <input type="text" name="company" placeholder=""/><br> 
    <input type="submit" id="register value=" OK" /> 
</form> 

これは次のようにマッピングされます:

url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm'), 

今後の私はWAこのフォームを送信

私は少し形をしました

url(r'^userfilt/$', views.userfilt, name='userfilt') 

URLマッピングファイル:NT背面メインビューに取得する

app_name = 'SSO_Management_POC' 
urlpatterns = [ 
    url(r'^$', views.IndexView.as_view(), name='index'), 
    url(r'^user/$', views.user, name='user'), 
    url(r'^userfilt/$', views.userfilt, name='userfilt'), 
    url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm'), 
    #url(r'^updateForm/$', views.updateForm, name='updateForm'), 
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'), 
    url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'), 
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'), 
] 

メインビューは、このようなものです(それは、このコードは、問題に関与しているとは思いません。) :

def userfilt(request): 
    if request.GET.get('create'): 
     return HttpResponseRedirect('insertForm') 

    if request.GET.get('update'): 
     print request.GET.get('pk') 
     return render(request, 'SSO_Management_POC/updateForm.html') 

    if request.method == 'POST': 
     form = UserForm(request.POST) 
     val = request.POST.get('my_textarea') 
     return render(request, 'SSO_Management_POC/userfilt.html', 
         {'top_user': TopUser.objects.filter(user_name__regex=val)}) 
    else: 
     print '4' 
     return render(request, 'SSO_Management_POC/userfilt.html') 

は今、私を殺しているコールは、私がフォームを送信するとき、私はちょうどたいが、常にやったように、POSTでそれを呼び出すメインページに戻って取得起こります!

return render(request, "SSO_Management_POC/userfilt.html") 

私はこのようにそれを行うが、問題は、URLがresettedされていないということです。..そして、このような結果は、すべての操作は私が作ったという結果と

http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/#

そのページにはもうマップされていないために機能しません。

これは、次のとおりです。

、代わりに

私の問題は、より良い説明しようとするには...

私はミリアンペアに行きます(http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/

:ページ内( http://127.0.0.1:8000/SSO_Management_POC/userfilt/

"GET/SSO_Management_POC/userfilt/HTTP/1.1" 200 2648

はその後、私は、フォームを呼び出すために作成するユーザーをクリックして、それは私をもたらします

"GET/SSO_Management_POC/userfilt/insertForm/HTTP/1。 それはここ

http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/#

を私に持って来る:私はフォームを送信し、私は戻ってメインページに取得したいと思い、ここに私は理解していないものが来るよりも、1" 200 1549

は、しかし、私は、これは再びコードです

http://127.0.0.1:8000/SSO_Management_POC/userfilt

ここに行きたいです

return render(request, "SSO_Management_POC/userfilt.html") 

これが作られたの呼び出しです:

"POST/SSO_Management_POC/userfilt/insertForm/HTTP/1.1" 200 2648

私はHttpResponseRedirectと、レンダリングにしようとしたように...しかし、いつもそれは私が前のものと呼んでいるurlを起こす、私はそれがリセットされたい、私はそれが../!!!

私のために働くだけの事はある:

return redirect("../") 

しかし

  1. これは、これはPOST呼び出しを行うために許可していません
  2. 汚れています!ダニエル・へ

UPDATE おかげで、私はまた、このようにそれを修正:

return redirect('/SSO_Management_POC/userfilt') 

しかし、それはまだと私に同じ問題を与える:http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/

に私を取得

return render(request,'/SSO_Management_POC/userfilt') 

ありがとう、フォークス!

+0

私はあなたの質問を理解していません...フォームをURL AからURL Bにリダイレクトしたい場合は、URL Bを宛先( 'action =" ... "')にする必要がありますあなたのフォーム(その場合はビューBはフォームを処理しなければなりません)、またはAへの投稿を使用してBにリダイレクトしますが、POSTリクエストでURL Bをロードすることはできません。どちらのオプションを好むでしょうか? – raphv

+0

私はアクションを使用すると、常に/ SSO_Management_POC/userfiltの代わりにhttp://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/userfilt.htmlに移動します。htmlそれは常に私が最後のページ、フォーム1に私のテキストを追加する! – ivoruJavaBoy

答えて

0

問題を解決するコードはありますか?テンプレートで

<form action="{% url 'userfilt' %}" method="post"> 
+0

いいえ:(私がこれを好きなら、いつも/SSO_Management_POC/userfilt.htmlの代わりに私をhttp://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/userfilt.htmlに連れて来ます。 – ivoruJavaBoy

+0

そして私はフォームメソッドURLマッピングを使って "def insertForm(request)"を実行し、それが動作します。これはリダイレクトです。このリダイレクションの最後には動作しません。先ほど要求したURLを私に追加してください... – ivoruJavaBoy

1

あなたは常に成功ポストした後、レンダリング、ないリダイレクトする必要があります。 return redirect(url)を行うことは正しいことです。なぜこれに満足していないのかは明らかではありません。

redirectcan accept the name of a URL patternですので、正しい場所に移動するreturn redirect('userfilt')を実行することができます。

+0

いいえ私がこのようにすると、リダイレクト( 'userfilt')するとこのエラーが出る:引数 '()'とキーワード引数 '{}'がない 'userfilt'の逆転0パターンが試行された:[ ]と私は(これはいつものように)このようにしようとしている場合:リダイレクトリターン( 'SSO_Management_POC/userfilt.html')(ので、明確な、簡単にする必要があります...)それは私をここにもたらす:http://127.0.0.1 :8000/SSO_Management_POC/userfilt/insertForm/SSO_Management_POC/userfilt.html – ivoruJavaBoy

+0

2番目のケースは、私が理解していないケースです。 urn redirect( 'SSO_Management_POC/userfilt.html')なぜそれが私をhttp://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/SSO_Management_POC/userfilt.htmlに連れて行くのですか?そのURLを前のものに追加しています... – ivoruJavaBoy

+1

あなたはルートから始まっていないので、先行するスラッシュを使用します: 'redirect("/... ")'おそらく、最初のエラーは 'userfilt'パターンが名前空間の中に含まれていれば、あなたは何を正確に知るための十分な情報を与えていない。 –

関連する問題