2017-07-18 135 views
0

我有以下兩個網址:Django的:重定向更改密碼URL

url(r'^change-password/$',django.contrib.auth.views.password_change,{'template_name': 'meta/changepassword.html', 'post_change_redirect': '/password-changed/'},name='change_password'), 
url(r'^change-passwordiOS/$',django.contrib.auth.views.password_change,{'template_name': 'meta/changepassword.html', 'post_change_redirect': '/password-changed/'},name='change_passwordiOS'), 

我想如果我使用的更改密碼中的以下形式,它會覆蓋哪些URL會被加載:

 {% if 'iOS' in request.path %} 
      <input type="hidden" name="next" value="/profileiOS/" /> 
     {% endif %} 

但是,當我從url(r'^change-passwordiOS/$'到達更改密碼並單擊「更改按鈕」時,它不會按照預期轉到/ profileiOS /,而是轉到標準/配置文件/ URL。

任何幫助,將不勝感激。

/更改密碼/視圖:

@login_required 
def password_changed(request): 
    messages.success(request, 'Your password has been changed.') 
    return redirect(reverse('profile')) 

全部更改密碼錶單:

 <form class="form-horizontal" role="form" method="post" action=""> 
     {% csrf_token %} 
     <fieldset> 
      <div class="form-group"> 
      <label class="col-md-6 control-label">{{ form.old_password.label }}:</label> 
      <div class="col-md-6"> 
       <input name="old_password" type="password" class="form-control"/> 
       <div class="text-danger"> 
       {% for error in form.old_password.errors %}{{ error }}<br/>{% endfor %} 
       </div> 
      </div> 
      </div> 
      <div class="form-group"> 
      <label class="col-md-6 control-label">{{ form.new_password1.label }}:</label> 
      <div class="col-md-6"> 
       <input name="new_password1" type="password" class="form-control"/> 
       <div class="text-danger"> 
       {% for error in form.new_password1.errors %}{{ error }}<br/>{% endfor %} 
       </div> 
      </div> 
      </div> 
      <div class="form-group"> 
      <label class="col-md-6 control-label">{{ form.new_password2.label }}:</label> 
      <div class="col-md-6"> 
       <input name="new_password2" type="password" class="form-control"/> 
       <div class="text-danger"> 
       {% for error in form.new_password2.errors %}{{ error }}<br/>{% endfor %} 
       </div> 
      </div> 
      </div> 
      <div class="form-group"> 
      <div class="text-right col-sm-12"> 
       <button type="submit" class="btn btn-primary">Change Password^</button> 
      </div> 
      </div> 
     </fieldset> 
     {% if 'iOS' in request.path %} 
      <input type="hidden" name="next" value="/profileiOS/" /> 
     {% endif %} 
     </form> 
+0

你確定它將你重定向到'/ profile /'頁面嗎?從你的代碼中,應該去'/ password-changed /'。 –

+0

我認爲,但它會去/ profile /:/。爲解釋它的問題添加了/ password-changed /的視圖。對於慢回覆抱歉。 –

回答

1

您手動重定向到/profile/password_changed視圖。你可以改變你的重定向邏輯,以取決於從模板發佈參數:

@login_required 
def password_changed(request): 
    messages.success(request, 'Your password has been changed.') 
    return redirect(request.POST.get('next', reverse('profile')))