Python Django 1.6:登录不工作后重定向到最后一页
每当提示用户登录时,我希望用户在成功登录后重定向到最后一页。目前,它只是重定向到索引页面。我知道这个问题已经被问过好几次了,也尝试过多种方法,但都不管用。我也试过这样做 而且它不起作用,因为大部分内容在1.6中已经被弃用了。现在我有了下面的代码,它告诉我,Python Django 1.6:登录不工作后重定向到最后一页,python,django,redirect,login,Python,Django,Redirect,Login,每当提示用户登录时,我希望用户在成功登录后重定向到最后一页。目前,它只是重定向到索引页面。我知道这个问题已经被问过好几次了,也尝试过多种方法,但都不管用。我也试过这样做 而且它不起作用,因为大部分内容在1.6中已经被弃用了。现在我有了下面的代码,它告诉我,'url'需要一个非空的第一个参数。Django 1.5中的语法已更改,请参阅文档。 在线 129: 这就是我到目前为止所做的 url.py url(r'^login/$', 'django.contrib.auth.views.login',
'url'需要一个非空的第一个参数。Django 1.5中的语法已更改,请参阅文档。
在线
129:
这就是我到目前为止所做的
url.py
url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'meddy1/login.html'}, name="login")
login.html
<form method="post" action="{% url 'django.contrib.auth.views.login' %}"> {% csrf_token %}
<input type="text" class="form-control" id="username" placeholder="Username" name="username">
<input type="password" class="form-control" id="inputPassword" placeholder="Password" name="password">
<button class="btn btn-primary" type="submit" name="submit" id="ss-submit">LOG IN</button>
<input type="hidden" name="next" value="{{ next }}" />
</form>
要使以下模板代码正常工作:
<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Link</a>
注册/login.html
的模板,或者您可以在url配置中指定特定的模板路径(必须存在):
url(r'^login/$',
'django.contrib.auth.views.login',
{'template_name': '<your template>'}
)
这会自动将request
变量get添加到模板上下文中RequestContext
呈现模板。有很多方法可以做到这一点,但最简单的方法是:
from django.shortcuts import render
def view(request):
...
return render(request, '<template>', {<other context variables>})
从django.exe导入渲染
def视图(请求):
...
返回呈现(请求“”,{})
使用RequestContext
会导致django.core.context\u处理器.request
上下文处理器运行{%url'登录“%}?下一步={{request.path}
谢谢!我不再收到错误,但仍无法重定向到最后一页。显示您的查看代码。您可能没有使用RequestContent
,因此在模板上下文中没有请求
。我已经添加了上面的视图。好的,您使用的是RequestContext
(通过渲染
快捷方式),因此您一定缺少django.core.context\u处理器.request
,从settings.py中的TEMPLATE\u CONTEXT\u处理器
,非常感谢。我真的很感激你详细的回答!
url(r'^login/$', 'django.contrib.auth.views.login')
url(r'^login/$',
'django.contrib.auth.views.login',
{'template_name': '<your template>'}
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
...
)
from django.shortcuts import render
def view(request):
...
return render(request, '<template>', {<other context variables>})