关于django中 cookie,session类视图,模板,模型的知识点

关于django中 cookie,session类视图,模板,模型的知识点

  • cookie知识点
    1-特点:它是由服务器以键值对的形式存储在浏览器中,当浏览器发送请求时会自动携带这东西。
    2-作为一名优秀的程序员可以通过HttpResponse.set_cookie(cookie名, value=cookie值, max_age=cookie有效期)进行设置,设置成功后,浏览器就有了cookie,下次访问时会携带,于是我们就可以用请求对象request.COOKIES.get(“key值”)来获取到value值了,删除response.delete_cookie(“key值”)

  • session 知识点
    1-特点:session 分两部分存储,key值存在浏览器,value值存在服务器,下次浏览器发送请求过来,需要从浏览器中获取key,再根据key从redis中获取value,如果能获取到value说明校验成功。
    2-使用request.session[“key值”]="value值"进行设置,然后通过request.session.get(‘键’,默认值)获取。
    其他的一些方法:request.session.clear()清除value部分;request.session.flush()删除浏览器,服务器中存储的一切关于session信息;del request.session["key"值]删除指定的key值和value值。

  • 类视图和中间件知识点
    1-类视图就是把之前我们写过的单个视图函数写在一个类里面,定义好类之后,需要在urls里使用views.DemoView.as_view()进行注册才可以访问类视图,配置好之后看下面的代码
    from django.views import View # 需要先导入View类,定义的子类需要继承她
    from django.utils.decorators import method_decorator
    class DemoView(View):
    def get(self, request): # 类中定义的方法只能是请求方式,不能瞎胡写的,如果你瞎比写会访问不到,
    # 因为它是根据浏览器的请求方式来选择调用哪个方法的
    return HttpResponse(‘我只接收GET请求’)

        def post(self, request):
            return HttpResponse('我只接收post请求')
        
        
    # 上面的代码虽然优雅一些,但是还可以进一步优化。比如下面的例子    
    # 定义一个闭包函数,func表示被装饰的类视图,在闭包里可以完成一些任务逻辑处理,比如验证  
    def outer(func):
        def inner(request,*args,**kwargs):
            return func(request,*args,**kwargs)
        return inner 
    # 下面使用装饰器的方式装饰类视图
    # @method_decorator(自定义的装饰器outer,name指定要执行的视图函数,如果全部执行就写dispatch)
    @method_decorator(outer, name='dispatch') 
    class DemoView(View): 
        def get(self, request):
            print('get方法')
            return HttpResponse('ok')
    
        def post(self, request):
            print('post方法')
            return HttpResponse('ok')
    

    2-中间件就类似于FLASK中的请求钩子,它使用闭包函数的方式实现,可以在原视图函数执行前,执行后添加业务处理,然后再返回响应。
    def middleware(func):
    def inner(request,*args,**kwargs):
    print(“原函数之前先验证”)
    resp=func(request,*args,**kwargs)
    print(“原函数之后再添加些内容”)
    return resp
    return inner
    # 上面就是定义好了一个中间件,然后需要在settings.py注册中间件就可以全局使用了,你会发现不管你访问哪个视图函数都会先执行print()函数。
    MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware’,
    “user.views.middleware” #### 注册中间件
    ]
    3-模板的语法跟FLASK一样,Django中需要配置一些信息而已,相对简单
    #第一步 在settings.py中配置模板文件夹的路径。
    TEMPLATES = [
    {
    ‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
    ‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], # 此处修改,templates是你新建的文件夹
    # 第二步 在templates文件夹下新建HTML文件,定义视图函数,返回数据给模板
    def temp(request):
    data={“book”:“张良”}
    resp=loader.get_template(“index.html”) # 通过这个方法返回的是模板对象。
    html_data=resp.render(data) # 通过模板对象的render方法,返回经过渲染的文本字符串
    return HttpResponse(html_data) # 将结果返回
    4-使用django进行数据库开发的步骤如下:

    1. 配置数据库连接信息(1-需要手动指定数据库的连接操作,安装pymysql,在根路径的init文件中写代码:
      from pymysql import install_as_MySQLdb
      install_as_MySQLdb()
      # 写好之后就表示数据了连接成功了,接下来在settings.py中配置数据库信息
      DATABASES = {
      ‘default’: {
      ‘ENGINE’: ‘django.db.backends.mysql’,
      ‘HOST’: ‘127.0.0.1’, # 数据库主机
      ‘PORT’: 3306, # 数据库端口
      ‘USER’: ‘root’, # 数据库用户名
      ‘PASSWORD’: ‘mysql’, # 数据库用户密码
      ‘NAME’: ‘django_demo’ # 数据库名字
      }
      }

    2. 在models.py中定义模型类
      from django.db import models

      #定义图书模型类BookInfo
      class BookInfo(models.Model):
          btitle = models.CharField(max_length=20, verbose_name='名称')
          bpub_date = models.DateField(verbose_name='发布日期')# verbose_name相当于起的别名。
          bread = models.IntegerField(default=0, verbose_name='阅读量')
          bcomment = models.IntegerField(default=0, verbose_name='评论量')
          is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
      
          class Meta:
              db_table = 'tb_books'  # 指明数据库表名
              verbose_name = '图书'  # 在admin站点中显示的名称
              verbose_name_plural = verbose_name  # 显示的复数名称
      
          def __str__(self):
              """定义每个数据对象的显示信息"""
              return self.btitle
      
    3. 迁移命令只有2行就能搞定- -!
      python manage.py makemigrations
      python manage.py migrate

    4. 通过类和对象完成数据增删改查操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值