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

电子商务网站建设与管理笔试旅游的网页设计模板

电子商务网站建设与管理笔试,旅游的网页设计模板,婚礼网,大数据营销系统怎么样文章目录 一、cookie与session的介绍HTTP四大特性 cookiesession Django操作cookie三板斧基于cookie的登录功能set_cookie 设置cookie 清空cookie设置cookie参数Django操作session设置session获取session清空sessionsession相关的参数设置过期时间 CBV添加装饰器 一、cookie与s… 文章目录 一、cookie与session的介绍HTTP四大特性 cookiesession Django操作cookie三板斧基于cookie的登录功能set_cookie 设置cookie 清空cookie设置cookie参数Django操作session设置session获取session清空sessionsession相关的参数设置过期时间 CBV添加装饰器 一、cookie与session的介绍 在讲之前我们先来回忆一下HTTP的四大特性 HTTP四大特性 1.基于请求响应 2.基于TIC、IP作用于应用层上的协议 3.无状态           保存客户端的装态 4.无连接 这篇文章要讲的就是跟“无状态”有关 最开始所有的网站都不需要用户注册登录所有人来访问到的数据都是一样的 但是随着互联网的发展很多网站需要知道当前用户的状态 cookie 保存在客户端与用户状态相关的信息这种信息都可以叫做cookie 最开始的cookie非常的不安全 session 保存在服务端与用户状态相关的信息session依赖于cookie工作 当然也可以不保存cookie在浏览器里设置阻止所有cookie当你设置了以后所有需要登录的网页都会登录不上去。 原理就是用户登录以后所有的相关信息都需要经过cookie服务器需要返回一些数据给cookie但是你的cookie被你关掉了就不会验证也就是令牌没有作用了所以不简易阻止所有cookie Django操作cookie 在Django中如何是用cookie 三板斧 return HttpResponse 返回字符串 return render 返回网页 return redirect 重定向obj HttpResponse return objobj render return objobj redirect return obj 操作cookie的时候就用到了这个obj对象基于cookie的登录功能 首先我们做一个简单的登录页面功能需要创建一个数据库从数据库匹配账户密码 models.py 创建数据库创建完别忘了做数据迁移 class Userinfo(models.Model):name models.CharField(max_length32)password models.IntegerField()tests.py 创建一些数据出来 import os import sysif __name__ __main__:os.environ.setdefault(DJANGO_SETTINGS_MODULE, day10.settings)import djangodjango.setup()from app01 import modelsbulk_list []for i in range(10000):user_obj models.Userinfo(namefkevin{i}, passwordf{i})bulk_list.append(user_obj)models.Userinfo.objects.bulk_create(bulk_list)set_cookie 设置cookie views.py 登录功能 def login(request):if request.method POST:print(request.POST)username request.POST.get(username) # 这里取到的是前端name的键password request.POST.get(password)userinfo models.Userinfo.objects.all() # 查询数据库的得到userinfo对象for i in userinfo: # 循环数据库里的数据if username i.name and password str(i.password): # 判断数据是否匹配print(登录成功)obj redirect(/index/) # 先实例化对象登录成功跳转页面obj.set_cookie(username, i.name, max_age60) # 让浏览器记录当前登录状态,max_age60这条记录只保存60秒60秒后删除return obj # 登录成功跳转页面else:return HttpResponse(密码错误)return render(request, login.html)login.html body form action methodpost用户名input typetext nameusername密码input typepassword namepasswordinput typesubmit /form /body这样一个简单的登录功能就创建出来了这个我们就可以在浏览器里看到cookie已经保存了一些数据 还可以做一个登录验证功能登录之后才能看到内容这里用到了装饰器 views.py def login_auth(func):def inner(*args, **kwargs): # 这里就已经接收到了request参数request args[0] # 将request从args中索引取值出来if request.COOKIES.get(username): # 如果cookies有值就不用再登陆return func(*args, **kwargs)else: # 否则需要登录验证return redirect(/login/) # 跳转到登录页面return innerlogin_auth # 添加登录功能装饰器 def index(request):if request.is_ajax():myfile request.FILES.get(myfile)import osdir_path os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取当前文件所在路径with open(dir_path /static/ myfile.name, wb) as f: # 将文件写到static文件夹下for i in myfile:f.write(i)return render(request, index.html, locals())清空cookie obj.delete_cookie(username)使用场景退出登录、注销 设置cookie参数 obj.set_cookie(username, i.name, max_age60)上面我们用到了三种参数分别是 ● key, 键 ● value’’, 值 ● max_ageNone, 超时时间 cookie需要延续的时间以秒为单位如果参数是\ None 这个cookie会延续到浏览器关闭为止 还有其他的一些参数 ● expiresNone, 超时时间(IE requires expires, so set it if hasn’t been already.)兼容IE浏览器可以在同时设置两种这样兼容了所有浏览器 ● path’/‘, Cookie生效的路径/ 表示根路径特殊的根路径的cookie可以被任何url的页面访问浏览器只会把cookie回传给带有该路径的页面这样可以避免将cookie传给站点中的其他的应用。 ● domainNone, Cookie生效的域名 你可用这个参数来构造一个跨站cookie。如 domain”.example.com”所构造的cookie对下面这些站点都是可读的www.example.com 、 www2.example.com 和an.other.sub.domain.example.com 。如果该参数设置为 None cookie只能由设置它的站点读取 ● secureFalse, 浏览器将通过HTTPS来回传cookie ● httponlyFalse 只能http协议传输无法被JavaScript获取不是绝对底层抓包可以获取到也可以被覆盖 Django操作session session的数据是保存在后端保存在后端的载体其实有很多种比如可以把数据保存在数据库、文件、Redis等 Django的默认保存位置在数据库中在django_session表中 设置session 成功设置一个seesion值有什么变化 会生成一个随机字符串 def set_session(request):![在这里插入图片描述](https://img-blog.csdnimg.cn/6bf1fb0033c44743a9713cd90627c514.png)request.session[username] kevin1return HttpResponse(set_session)2. 会把用户设置的信息保存到django_session中数据也做了加密处理 3. 把数据封装到了request.session里去了 Django后端把随机字符串保存到浏览器中后端的随机字符串中的也保存在浏览器中keysessionid 这个是候我们再多设置一个值的时候session_key是不变的变的是session_data在别的浏览器打开的是候会多增加一条但是一个浏览器只对应一条这样做的好处可以节省MySQL数据空间 获取session def get_session(request):print(request.session.get(username)) #kevin1 直接通过点语法获取return HttpResponse(get_session)获取session的时候发生了哪些事 浏览器先把sessionid回传到Django的后端 Django后端获取到了sessionid然后去数据表中根据session_key查询 如果查到了就说明之前已经登录过 如果查不到就返回None 查询出来的数据默认是加密的Django后端又把数据解密之后封装到request.session中 在取session值的时候就从request.session中取 session的过期时间默认是14天 清空session request.session.delete() # 清空session只删除服务端的数据不删除浏览器的 request.session.flush() # 清空前后端的session数据session相关的参数 request.session.values() # 拿出所有的value值 request.session.keys() # 拿出所有的key值 request.session.items() # 拿出所有的key值和value值设置过期时间 request.session.set_expiry(value)如果value是个整数session会在这些秒数后失效 如果value是个datatime或timedeltasession就会在这个时间后失效。 如果value是0用户关闭浏览器session就会失效 如果value是Nonesession会依赖全局session失效策略 CBV添加装饰器 现在我给CBV添加一个登录验证有三种方法 第一种 from django.utils.decorators import method_decoratormethod_decorator(login_auth, nameget) method_decorator(login_auth, namepost) class L_login(View):def get(self, *args, **kwargs):return HttpResponse(get)def post(self, *args, **kwargs):return HttpResponse(post)第二种 from django.utils.decorators import method_decoratorclass L_login(View):method_decorator(login_auth)def get(self, *args, **kwargs):return HttpResponse(get)method_decorator(login_auth)def post(self, *args, **kwargs):return HttpResponse(post)第三种 from django.utils.decorators import method_decoratorclass L_login(View):method_decorator(login_auth) # 加载dispatch上的装饰器会对下面的所有方法起作用def dispatch(self, request, *args, **kwargs):return super().dispatch(request, *args, **kwargs)def get(self, request):return HttpResponse(get)def post(self, request):return HttpResponse(post)一般第一种和第二种用的比较多
http://www.w-s-a.com/news/623347/

相关文章:

  • 电子项目外包网站考二建需要什么学历和专业
  • 做网站推广引流效果好吗电商推广技巧
  • 亦庄网站建设价格广州网站推广服务
  • 十大免费ppt网站下载重庆在线高校平台登录
  • 做环保网站案例百度seo教程
  • 体育用品网站模板网站建设话术
  • 潍坊网站建设服务商做网站多久能盈利
  • 嘉定区做网站房产信息查询官网
  • 网站直播间 是怎么做的唐山论坛建站模板
  • 深圳洲聚网站建设wordpress 泛解析
  • 五金东莞网站建设技术支持wordpress 添加模板
  • 网站申请专利春节网页设计素材
  • 进网站备案md风格的wordpress主题
  • 如何建站网站十大免费建站app
  • 工作号做文案素材的网站晋城网站设计人
  • 建设部网站官网 施工许可怎样建网站 需要
  • 什么网站都能打开的浏览器同城小程序怎么推广
  • 在电脑上怎么做网站网址seo分析
  • 石家庄做网站网络公司电子商务营销推广
  • 网站开发 前端专做婚礼logo的网站
  • 同创企业网站建设拖拽建设网站源码
  • wordpress调用网站标题网站页面排版
  • 哈尔滨营销网站建设电子商城网站开发要多少钱
  • 免费织梦导航网站模板下载地址自己建站网站
  • 获取网站访客qq号码代码做抽奖网站违法吗
  • 湖南大型网站建设公司排名偷网站源码直接建站
  • 网站建设周期规划北京网站设计必看刻
  • 如何做自己的在线作品网站深圳网站设计公司的
  • 网站开发外包公司wordpress最简单模板
  • 湖南省建设人力资源网站wordpress主机pfthost