2017-10-05 8 views
0

私はDjango 1.11を使用しています。私はいくつかのHTMLページを開発しました&はviews.pyを持っています 私はforgotpassword.htmlと呼ばれるページを持っています。 それぞれのセキュリティに関する質問&は、回答を入力するためにそれをユーザに表示したいと考えています。このためにgetpassword.htmlという別のページがあります。 view.pyDjango views.pyからhtmlページへのリダイレクト

def forgotpassword(request): 
    usercontemail = request.POST['useremail'] 
    #Get the securityquestion from Database 
    return redirect(request,'home/getpassword.html',{'squestion': squestion}) 


def getpassword(request): 
    #Display security question, get the answer from user & proceeed 

ユーザーが自分の電子メール&ヒットは私がgetpassword.htmlから来ている彼のセキュリティの答えを、入力するようにユーザの入力エリアを見ることができる午前提出入り: は、ここでは、コードです。しかし、urlはforgotpassword.htmlに残っています。

ユーザーがセキュリティアンサーを入力すると、私はuseremailのエラーが表示されなくなります。これはURLの問題のためです。

回避策を教えてください。

+0

JS経由で提出しますか?テンプレートを表示できますか? –

+0

私はJS経由で提出しません。 getpassword.html&getpassword.htmlのテンプレートは非常に基本的です。 –

+0

あなたのリダイレクトURLが「/」[ここに記載されている](https://stackoverflow.com/questions/43778124/django-redirect-function-keep-old-url-path)で始まっていないということは、エラーと関係がありますか? –

答えて

0

のURLに自分のフォームのアクションを定義し、私は同様の問題がありましたレコードを更新していて、レンダーリダイレクトが正しいページをレンダリングしていましたが、URLが変更されていませんでした。私が気づいていなかったことは、あなたが行っているときに特定のページをリダイレクトできるだけでなく、url.pyファイルで指定されたURLをリダイレクトすることもできるということでした。私は、url.py宣言されたURLを指定することによって、urlファイルに行き、次に指定されたビューファイルに行き、途中で宣言されたパラメータを渡すという通常のループを通してリクエストを送信することがわかりました。あなたは

return redirect(request, 'home/getpassword.html', {'squestion': squestion }) 

を持っているところ

だからあなたのコードでは、あなたはちょうどあなたのurl.pyファイルは、あなたが渡すパラメータを指定してください

#return redirect('app url.py:specified url of view', {*args} 
return redirect('home:getpassword', {'squestion': squestion}) 

を試みることができます。

stackoverflowの上でこの記事をチェックアウト: Django return redirect() with parameters

も(リダイレクトをレンダリングに関するセクションを読んでDjangoのドキュメントを) https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/

はそれがお役に立てば幸いです。

+0

"あなたのurl.pyファイルに、渡したいパラメータが指定されていることを確認してください。" urls.pyでどのようにパラメータを設定しますか? –

+0

上記のstackoverflowドキュメントを確認してください。これは、URLの解法の例です(r '^ link /(?P \ w +?)/ $'、my_function)。また、Djangoのドキュメントはhttps://docs.djangoproject.com/en/1.11/topics/http/urls/でチェックできます。 :-) – cander

0

テンプレートをレンダリングしないでリダイレクトする必要があります。そのリダイレクトに

def forgotpassword(request): 
    usercontemail = request.POST['useremail'] 
    #Get the securityquestion from Database 
    ## you can save the scurtiy question in session or you cn add the 
    ## question id in the url 
    return HttpResponseRedirect("url of the security question page") 

どこ、あなたが方法

def getpassword(request): 
    if request.METHOD == "GET": 
     ## get question from session or from url 
     return redirect(request,'home/getpassword.html',{'squestion':squestion}) 
    else if request.METHOD == "POST": 
      ##submit answer 
     #Display security question, get the answer from user & proceeed 

に別の方法を確認しただけでパスワードを取得

関連する問題