0

我现在正在谷歌搜索 2 小时,但没有成功的迹象。

成功登录后,我需要使用nexturl 中的参数将用户重定向到登录前的页面。

但如果我这样做了,即使我在网址中有这样的情况print request.GET.get('next'),我也会得到这样的结果?Nonenext?next=/next-page/

我的登录视图。

    username = request.POST.get('username_login')
    pwd = request.POST.get('pwd_login')
    user = authenticate(username=_username, password=pwd)        
    if user is not None:
        if user.is_active:
            login(request, user)
            print request.GET.get('next')
            if request.GET.get('next', False):
                return HttpResponseRedirect(request.GET.get('next'))
            else:
                return render_to_response("profil.html",{},context_instance=RequestContext(request))
        else:#user not active
            fail = 'account inactive' 
            return render_to_response("anmelden.html",{'fail':fail},context_instance=RequestContext(request))

我正在使用 django 1.4,我正在使用contrib.auth.login(). 为什么我不能重定向到页面?

4

1 回答 1

1

如果您使用 django.contrib.auth.login() 这意味着您只需使用 LOGIN_REDIRECT_URL 覆盖 django 默认登录,例如,如果您想注册并重定向到登录,则只需覆盖 views.py。所以你可以覆盖 django login urls.py login.html 和其他。

 settings.py:
 LOGIN_REDIRECT_URL='/' # to redirect to the home after login

urls.py:
urlpatterns += patterns('django.contrib.auth.views',
    (r'^login/$','login',{'template_name':'registration/login.html'},'login'),
)

login.html :
<div id="main">
{% if form.errors %}
     <ul class="errorlist">
     <li>You entered an invalid username or password</li>
    </ul>       <br/>
      {% endif %}
      <form method="POST" action="{% url "django.contrib.auth.views.login" %}">{% csrf_token %}
        <table summary="login" id="login">
        <caption>Login</caption>
        <tr>
                <td>{{form.username.label_tag}}:</td>
                <td>{{form.username}}</td>          
        </tr>

        <tr>
                <td>{{form.password.label_tag}}:</td>
                <td>{{form.password}}</td>          
        </tr>           
        <tr>
        <td colspan="2" class="right">
    <input type="submit" value="Login" /></td>          
        </tr>
        </table>
        <input type="hidden" name="next" value="{{next}}" />
        </form>

    </div>
于 2013-09-14T21:31:59.160 回答