我已成功设置应用程序将我发送到 url 之类的
http://localhost:8000/log_in/?next=/task/1/
我已将上下文处理器定义如下
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",
)
但是当我登录时,它会将我重定向到主页,我request
在登录视图中打印了,我得到的GET
是空查询集,它是 strande,任何想法为什么!?
我也尝试添加
<input type="hidden" name="next" value="{{next}}" />
到 login.html,但这将POST
请求的 next 添加为空参数
编辑1
登录视图,我尝试打印'next'参数并返回null,因为它GET
是一个空的查询集
def log_in(request):
"""
This method checks for the input username(email) and password.
If they are empty the user id redirected to the login page, else checks whether
the user is authenticated. If the user is not found in the database, it renders the login
page with an error_message that the email or password are invalid. Further, it checks if the user's
account is activated, it not he is redirected back to login and notified.
If the user is activated, it checks for the field remember_me, if it is not checked, then the
expiry date of the session is set to when the browser is closed.
Then the user is logged in using the login in django backends and it checks on the session
value if it is his first time or not to open the getstrated instead of the normal profile.
"""
print request.GET['next']
base_login=True
if request.POST.has_key('username') and request.POST.has_key('password'):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is None:
error_message = "The Email/Password is incorrect."
return render(request, 'userprofiles/registration.html', {'error_message': error_message})
else:
if user.is_active:
if not request.POST.get('remember_me', False):
request.session.set_expiry(0)
login(request, user)
request.session['DEPLOYED_ADDRESS'] = settings.DEPLOYED_ADDRESS
first_week = False
logged_user = UserProfile.objects.get(username=request.user.username)
if (((request.user.last_login - request.user.date_joined).days) < 8) and (logged_user.got_started == False):
first_week = True
if first_week:
return redirect('/getting_started/', RequestContext(request))
else:
return redirect('/', RequestContext(request))
else:
error_message = "This Email Hasn't Been Activated Yet. Please Check The Activation Mail Sent To You."
return render(request, 'userprofiles/registration.html', {'error_message': error_message})
else:
RegistrationForm = get_form_class(up_settings.REGISTRATION_FORM)
if request.method == 'POST':
form = RegistrationForm(data=request.POST, files=request.FILES)
if form.is_valid():
new_user = form.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password']
request.session['login'] = "first"
# Automatically log this user in
if up_settings.AUTO_LOGIN:
if up_settings.EMAIL_ONLY:
username = form.cleaned_data['email']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
calculate_profile_completion(request)
return redirect(up_settings.REGISTRATION_REDIRECT)
else:
form = RegistrationForm()
return render(request, 'userprofiles/registration.html', {'form': form,'base_login': base_login})