2017-07-18 108 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')))