当前位置: 首页 > news >正文

做app和网站动漫制作专业升本能报的专业

做app和网站,动漫制作专业升本能报的专业,创办一个网站需要多少费用,企业网站建设排名资讯12 案例#xff1a;登录_哔哩哔哩_bilibili 参考大佬的B站视频教程笔记 目录 登录接口的实现会话机制成功后的信息保存#xff1a; 中间件的使用#xff0c;解决登录保护使未登录过的用户进行登录 Form组件 - 主要作用#xff1a; Form组件信息的配置 ModelForm组件…12 案例登录_哔哩哔哩_bilibili   参考大佬的B站视频教程笔记 目录 登录接口的实现会话机制成功后的信息保存 中间件的使用解决登录保护使未登录过的用户进行登录 Form组件 - 主要作用 Form组件信息的配置 ModelForm组件 - 特点 验证码的保存在session会话中并设置过期时间 缓存的使用 python 快速定位问题小技巧(traceback的使用) 登录接口的实现会话机制成功后的信息保存 生成随机字符串返回到用户的浏览器的cookie中存储到网站的session中  随机字符串用户标识 中间件的使用解决登录保护使未登录过的用户进行登录 from django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse, redirectclass AuthMiddleware(MiddlewareMixin):# 项目运行前的操作请求钩子函数def process_request(self, request):# 0.排除那些不需要登录就能访问的页面# request.path_info 获取当前用户请求的URL /login/if request.path_info in [/login/, /image/code/]:return# 1.读取当前访问的用户的session信息如果能读到说明已登陆过就可以继续向后走。info_dict request.session.get(info)# print(info_dict)if info_dict:return# 2.没有登录过重新回到登录页面return redirect(/login/)# 注册app中间件 myapp.middleware.auth.AuthMiddleware Form组件 - 主要作用 1.生成html表单标签、数据校验 2.form LoginForm(initial{user:xxx,password:xxx}) # Web页面默认值字典类型 Form组件信息的配置 # form 组件配置 class LoginForm(BootStrapForm):username forms.CharField(label用户名,widgetforms.TextInput,requiredTrue)password forms.CharField(label密码,widgetforms.PasswordInput(render_valueTrue), # 展示数据加密点显示requiredTrue)code forms.CharField(label验证码,widgetforms.TextInput,requiredTrue)def clean_password(self): # 密码采用md5加密pwd self.cleaned_data.get(password)return md5(pwd) 数据校验视图 def login(request): 登录 if request.method GET:form LoginForm()return render(request, login.html, {form: form})form LoginForm(datarequest.POST)# form LoginForm(initial{user:xxx,password:xxx,code:xxxx}) # Web页面初始值if form.is_valid():# 验证成功获取到的用户名和密码# {username: wupeiqi, password: 123,code:123}# 验证码的校验user_input_code form.cleaned_data.pop(code)code request.session.get(image_code, )if code.upper() ! user_input_code.upper():form.add_error(code, 验证码错误)return render(request, login.html, {form: form})# 去数据库校验用户名和密码是否正确获取用户对象、None# admin_object models.Admin.objects.filter(usernamexxx, passwordxxx).first()admin_object models.Admin.objects.filter(**form.cleaned_data).first()if not admin_object:form.add_error(password, 用户名或密码错误)# form.add_error(username, 用户名或密码错误)return render(request, login.html, {form: form})# 用户名和密码正确# 网站生成随机字符串; 写到用户浏览器的cookie中在写入到session中request.session[info] {id: admin_object.id, name: admin_object.username}# session可以保存7天request.session.set_expiry(60 * 60 * 24 * 7)return redirect(/admin/list/)return render(request, login.html, {form: form}) 登录页面login.html div classaccounth2用户登录/h2form methodpost novalidate{% csrf_token %}div classform-grouplabel用户名/label{{ form.username }}span stylecolor: red;{{ form.username.errors.0 }}/span/divdiv classform-grouplabel密码/label{{ form.password }}span stylecolor: red;{{ form.password.errors.0 }}/span/divdiv classform-grouplabel图片验证码/labeldiv classrowdiv classcol-xs-7{{ form.code }}span stylecolor: red;{{ form.code.errors.0 }}/span/divdiv classcol-xs-5img idimage_code src/image/code/ stylewidth: 125px;/div/div/divinput typesubmit value登 录 classbtn btn-primary/form /divModelForm组件 - 特点 校验数据,生成表单标签使用obj直接保存数据到数据库免去复杂的xxx.objects.create(xxx)默认显示数据对象类型         objxxx.objects.filter(id1).first()            objxxxModelForm(instanceobj) 依赖于数据库的model减少字段的定义 class Meta:model xxxfields [username]# fields __all__ ModelForm组件 class UserModelForm(BootStrapModelForm):name forms.CharField(min_length3,label用户名,widgetforms.TextInput(attrs{class: form-control}))class Meta:model models.UserInfofields [name, password, age, account, create_time, gender, depart]# fields __all__ 数据检验与保存 def user_model_form_add(request): 添加用户ModelForm版本if request.method GET:form UserModelForm()return render(request, user_model_form_add.html, {form: form})# 用户POST提交数据数据校验。form UserModelForm(datarequest.POST)if form.is_valid():# 如果数据合法保存到数据库# {name: 123,account: Decimal(0),gender: 1, depart: Department: IT运维部门}# print(form.cleaned_data)form.save() # 同 models.UserInfo.objects.create(..)return redirect(/user/list/)# 校验失败在页面上显示错误信息return render(request, user_model_form_add.html, {form: form}) 用户web页面user_add.html div classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title 新建用户 /h3/divdiv classpanel-bodyform methodpost novalidate{% csrf_token %}{% for field in form %}div classform-grouplabel{{ field.label }}/label{{ field }}span stylecolor: red;{{ field.errors.0 }}/span/div{% endfor %}button typesubmit classbtn btn-primary提 交/button/form/div/div /div 验证码的保存在session会话中并设置过期时间 # 写入到自己的session中以便于后续获取验证码再进行校验 request.session[image_code] code_string # 给Session设置60s超时 request.session.set_expiry(60) # 校验 # 验证码的校验 user_input_code form.cleaned_data.pop(code) code request.session.get(image_code, ) if code.upper() ! user_input_code.upper():form.add_error(code, 验证码错误)return render(request, login.html, {form: form}) 保存用户登录的信息到session并设置过期时间 # 网站生成随机字符串; 写到用户浏览器的cookie中在写入到session中 request.session[info] {id: admin_object.id, name: admin_object.username} # session可以保存7天 request.session.set_expiry(60 * 60 * 24 * 7) 用户密码的加密形式(即用户输入的密码是密钥加密和MD5加密后来进行和数据库中比对) def md5(data_string): # SECRET_KEY MD5 加密obj hashlib.md5(settings.SECRET_KEY.encode(utf-8))obj.update(data_string.encode(utf-8))return obj.hexdigest() 用户注销功能的实现 def logout(request): 注销 request.session.clear() # 清除session会话信息return redirect(/login/) model中的choices字段的获取 # 在django中做的约束 gender_choices ((1, 男),(2, 女),) gender models.SmallIntegerField(verbose_name性别, choicesgender_choices) 获取方法get_字段名_display()  queryset models.UserInfo.objects.all() for row in queryset:print(row.get_gender_display()) # 输出男或女# [注意row.get_gender_display在前端页面时不要加括号django自动实现] 缓存的使用 响应头 Expires  缓存过期时间用来指定资源到期的时间响应头 Chche Control用于控制网页的缓存创建后的时间缓存失效单位sget_or_set 若未获取到数据则执行set操作add(key,value) 存储缓存get(key) 获取缓存数据set_many(dict,timeout) 批量存储缓存delete(key) 删除缓存数据get_many(key_list) 批量获取数据 # setting config CACHES {default:{BACKEND:django.core.cache.backends.locmem.LocMemCache, # 内存缓存LOCATION:unique-snowflake,TIMEOUT:300,OPTIONS:{MAX_ENTRIES:300, # 缓存最大数据条数CULL_FREQUENCY:2, # 当缓存条数达到最大值时删除1/x的缓存数据}} } # view import time from django.views.decorators.cache import cache_page cache_page(15) # 缓存时间,多长时间缓存一次,单位s def test_cache(request):t time.time()return HttpResponse(time is %s%(t)) python 快速定位问题小技巧(traceback的使用) import traceback try:a except:print(traceback.format_exc())输出 Traceback (most recent call last):File E:/desktop/my_dj/web/app/tests.py, line 6, in modulea NameError: name a is not defined
http://www.zqtcl.cn/news/495205/

相关文章:

  • 教育网站的建设品牌营销型网站作用
  • 金凤区建设交通局网站做洗衣液的企业网站
  • 南阳网站优化手机咋做网站
  • 做网站多少钱一年没有网站做cpa怎么赚钱
  • 二手房发布网站怎么做建站哪家好用兴田德润
  • 网站开发有几种深圳网站制作长沙
  • 为什么一个网站外链那么多公司团建活动
  • 公司门户网站建设策划书wordpress清空数据
  • 大兴专注高端网站建设交互设计留学
  • 想要黑掉一个网站 要怎么做网页设计师培训机构有吗
  • 做网站网站应该注意什么关于建设网站的会议纪要
  • 什么网站建设最简单做毕业设计实物的网站
  • 正规网站开发文案电商网站与企业网站区别
  • 襄阳做网站比较有实力的公司长沙出名的网站设计推广
  • 徐州网站设计师最便宜的购物平台
  • 网站域名和空间费用wordpress是是什么技术
  • 企业制作网站一般多少钱上海网站制作费用
  • 苏州住建网站什么叫关键词
  • 电商网站开发过程是什么推广整合营销
  • 网页建站软件网络市场调研的步骤
  • 自己做的网站怎样赚钱长沙专业做网站排名
  • 张家界做网站公司国内最先做弹幕的网站
  • 免费快速建站网站做网站用什么数据库
  • 哪有做课件赚钱的网站温州设计公司排名
  • 西安网站建设公司php大气企业网站
  • 天河公司网站建设内蒙古建设厅安全资料网站
  • 学习网站的建设怎么做网站建设作业
  • 做公司产品展示网站企业网盘源码
  • 南通做网站企业初中生代表性设计制作作品图片
  • php框架做网站好处网站后台模板免费下载