Python Django登录部分
我现在正在使用Django框架开发一个系统。我正在编写用户登录部分。这似乎很成功,但效果不太好Python Django登录部分,python,django,Python,Django,我现在正在使用Django框架开发一个系统。我正在编写用户登录部分。这似乎很成功,但效果不太好 登录系统可以通过用户名和密码识别用户 身份验证只能持续一个“网页”。当我加载另一个页面或甚至重新加载该页面时,django无法获取用户的信息(似乎已注销) 如果我查看页面资源,我会看到登录过程后生成的会话号 我应该如何确保只需要一次登录?并在整个过程中保持我的用户登录 这是我的视图文件 from django.shortcuts import render from django.http imp
- 登录系统可以通过用户名和密码识别用户
- 身份验证只能持续一个“网页”。当我加载另一个页面或甚至重新加载该页面时,django无法获取用户的信息(似乎已注销)
- 如果我查看页面资源,我会看到登录过程后生成的会话号
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from django.template import RequestContext, loader
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render_to_response,redirect
from django.template import RequestContext
from django.views.decorators.csrf import csrf_exempt
from django.template.context_processors import csrf
from . import models
from . import form as f
from django.contrib.sessions.backends.db import SessionStore
def index(request):
if request.user != None :
template = loader.get_template('index.html')
return HttpResponse(template.render(None))
else :
return HttpResponseRedirect('/PDT/login_failed')
def Home(request):
template = loader.get_template('Home.html')
return HttpResponse(template.render(None))
def loggin_in(request):
c = {}
c.update(csrf(request))
return render_to_response('login.html', c)
def login_user(request):
logout(request)
username = password = ''
if request.POST:
username = request.POST.get('username','')
password = request.POST.get('password','')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
request.session['username']=user.username
return HttpResponseRedirect('/PDT/logged_successful')
return HttpResponseRedirect('/PDT/inactive')
return HttpResponseRedirect('/PDT/incorrect')
return HttpResponseRedirect('/PDT/login_failed')
def logged_in(request):
if request.user :
return render_to_response('index.html',{ 'user' : request.user },context_instance=RequestContext(request))
else :
return HttpResponseRedirect('/PDT/login_failed')
def login_failed(request):
return render_to_response('problem.html',{ 'message' : "Login failed" })
def log_out(request):
request.session.flush()
logout(request)
return render_to_response('problem.html',{ 'message' : "Logged out" })
def inactive(request):
return render_to_response('problem.html',{ 'message' : "Inactive" })
def incorrect(request):
return render_to_response('problem.html',{ 'message' : "Incorrect Username or Password" })
def iter_update(request):
if request.session['username'] != None :
return render_to_response('iter_update.html',{ 'user' : request.user },context_instance=RequestContext(request))
else :
return HttpResponseRedirect('/PDT/login_failed')
def Create_form(request):
if request.method == "POST":
form = f.ProjectForm(request.POST)
if(form.is_valid()):
print(request.POST['title'])
form.save()
message = 'success'
else:
message = 'fail'
return render_to_response('Create_form.html',
{'message': message,
'user': request.user,},
context_instance=RequestContext(request))
else:
return render_to_response('Create_form.html',
{'form': f.ProjectForm()},
context_instance=RequestContext(request))
您的用户已登录,但由于您奇怪地通过template.render(无)呈现主模板和索引模板,因此模板中没有
请求
或用户
上下文。相反,请使用运行上下文处理器的render
快捷方式。您的用户已登录,但由于您通过template.render(无)奇怪地呈现主模板和索引模板,因此模板中没有请求
或用户
上下文。相反,请使用运行上下文处理器的render
快捷方式。请使用返回呈现(请求、模板名称、上下文记录)
来呈现模板。你独特的方式可能会断章取义
另外,如果request.user!=无:语句。请使用
返回呈现(请求、模板名称、上下文)来呈现模板。你独特的方式可能会断章取义
另外,如果request.user!=无:
语句。请从设置文件中添加相关设置。要使身份验证工作,您至少需要设置为。在这种情况下,当前登录的用户可通过request.user
自动访问。请从设置文件中添加相关设置。要使身份验证工作,您至少需要设置为。在这种情况下,当前登录的用户可以通过request.user
自动访问。