Python 登录后如何使用Django重定向到原始请求
我练习了如何使用django登录,但它不能在登录前重定向到页面 请教我怎么做谢谢 我的项目名称是:proj 我有一个应用程序名:app1 当我去http://127.0.0.1:8000/f/index/ 它将重定向到http://127.0.0.1:8000/accounts/login/?next=/f/index/ 输入用户名和密码后, 我想重定向到http://127.0.0.1:8000/f/index/ 通过参数?next=/f/index/但不知道如何操作 app1/views.py:Python 登录后如何使用Django重定向到原始请求,python,django,Python,Django,我练习了如何使用django登录,但它不能在登录前重定向到页面 请教我怎么做谢谢 我的项目名称是:proj 我有一个应用程序名:app1 当我去http://127.0.0.1:8000/f/index/ 它将重定向到http://127.0.0.1:8000/accounts/login/?next=/f/index/ 输入用户名和密码后, 我想重定向到http://127.0.0.1:8000/f/index/ 通过参数?next=/f/index/但不知道如何操作 app1/vi
from django.contrib.auth.decorators import login_required
@login_required
def index(request):
logger.info('test')
....
proj/url.py:
urlpatterns = patterns('',
url(r'^accounts/login/$', 'proj.views.login'),
url(r'^accounts/logout/$', 'proj.views.logout'),
url(r'^accounts/auth/$', 'proj.views.auth_view'),
proj/views.py
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.contrib import auth
from django.core.context_processors import csrf
def login(request):
c={}
c.update(csrf(request))
return render_to_response('proj/login.html',c)
def auth_view(request):
username = request.POST.get('username','')
password = request.POST.get('password','')
user = auth.authenticate(username=username,password=password)
if user is not None:
auth.login(request,user)
# return HttpResponseRedirect(request.POST.get('next')) #not work
else:
return HttpResponseRedirect('/accounts/invalid')
proj/login.html:
{% if form.errors %}
<p class="error">Sorry.that's not valid </p>
{% endif %}
<form action="/accounts/auth/?next={{ request.get_full_path|urlencode }}" method="post">{% csrf_token %}
<label for="username" >User name:</label>
<input type="text" name="username" value="" id="username">
<label for="password" >Password:</label>
<input type="password" name="password" value="" id="password">
<input type="submit" value="login" />
</form>
在views.py中尝试以下操作:
当您键入url且之前未登录时,django重定向到url:http://127.0.0.1:8000/accounts/login/?next=/f/index/ 输入用户名和密码后,单击提交按钮,django会自动将您重定向到http://127.0.0.1:8000/f/index/
使用URLSolver。我不清楚您想要实现什么。检查是否要将用户重定向到登录页。您是否收到任何错误?访问索引视图时发生了什么?或者成功登录后重定向到哪个页面?对不起,我编辑了我的问题来描述细节。当我尝试返回HttpResponseRedirectrequest.POST.get'next'时,出现错误'NoneType'对象没有属性'find'和requesturlishttp://127.0.0.1:8000/accounts/auth/?next= 似乎无法获取下一个参数
if user is not None:
auth.login(request,user)
return HttpResponseRedirect('/f/index/')