二十六、登录相关
1.一、计算机初识2.二、数据概述3.六、ip地址与子网划分4.五、网络通信实现5.四、字符编码6.三、网络基础7.十四、MySQL与Django之Model基础8.十三、Django Admin9.十二、Django视图函数和模版相关10.十一、Django url控制系统11.十、Django静态文件12.九、Django环境搭建(基于anaconda环境)13.八、Python开发环境管理14.七、ip地址配置15.二十五、JSON跨域16.二十四、文件上传17.二十三、Django Serializes18.二十二、Django之Form组件19.二十一、分页20.JS笔记21.二十、基于Bootstrap和FontAwesome制作页面22.十九、Ajax和iFrame23.十八、Django之Http24.十七、Cookie和Session25.十六、Django的ORM(二)26.十五、Django的ORM27.实践中前端的一些笔记
28.二十六、登录相关
29.二十九、RBAC+动态菜单30.二十八、XSS31.JS第三方插件32.二十七、简单的验证码实现33.三十二、Django实践的笔记34.三十一、动态Form35.三十、Kingadmindef login(request):
if request.method == 'GET':
form = account.LoginForm()
return render(request, 'login.html',{'form':form })
else:
form = account.LoginForm(request.POST)
result = {'status': False, 'message': None, 'errors': None}
if form.is_valid():
name = form.cleaned_data['username']
pwd = form.cleaned_data['password']
userInfo = models.UserInfo.objects.filter(name=name,password=pwd).first()
if userInfo:
request.session['UserInfo'] = name
return redirect('/')
else:
result['errors'] = '用户名或密码错误' # 这里是不兼容的地方,这个错误html不知道怎么显示给用户
return render(request, 'login.html', {'form': form})
else:
return render(request, 'register.html', {'form': form})
def logout(request):
request.session.clear()
return redirect('/')
def index(request):
// sessionid 未登录就已经有,因为进行http请求就是一次会话,未登录,session也有其它值在记录着
username = request.session.get('UserInfo') // 直接拿。不需要从cookies中拿sessionid,再拿session,底层已经做好
return render(request, 'index.html', {'username':username})
#一个月免登录
...登录成功,session除了保存用户信息,还设置session有效时间
if request.POST.get('rmb'): # 勾选了checkbox才会发送过来
request.session.set_expiry(60*60*24*30) # 设置session有效期为一个月
SESSION_COOKIE_AGE = 60 * 60 * 24 #Session的cookid失效日期(2周)(默认)
SESSION_SAVE_EVERY_REQUEST = True #是否每次请求都保存Session,默认修改之后才保存
登录装饰器
def check_login(func):
def inner(request, *args, **kwargs):
if request.session.get('user_info'):
return func(request, *args, **kwargs)
else:
return redirect('/login.html')
return inner
Django 默认登录url
setting.py中
LOGIN_URL = '/login/' # 跳转登录时,django会跳转到默认路径。这里修改用具体项目的登录页路径
合集:
Python全栈(Django)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库