Web基础概念

228 阅读5分钟

1、简写你对ORM的理解

ORM(对象关系映射)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中

一种设计思想,以面向对象的形式操作数据库,将增删改查包装成了方法 不用sql语句(自动生成sql语句)可以根据实体类的映射创建表

2、简写你对CSRF的理解

跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法

在社交工程的一点帮助下(例如通过电子邮件或聊天发送链接),攻击者可能会诱骗Web应用程序的用户执行攻击者选择的操作

3、简写你对AJAX的理解,如何使用jquery实现

异步JavaScript和XML,是一种创建交互式、快速动态网页应用的网页开发技术,无需要新加载整个网页的情况下,能够更新部分网页的技术

  1. 在页面代码上,我们先引入jquery脚本文件

  2. 然后添加一个div,div里的内容是空的

  3. 下方添加一个按钮,用来触发ajax请求

  4. 在按钮的事件函数上,直接调用jquery的 $.ajax方法,方法里url就是要调用的请求链接,data为参数

  5. 然后再添加一个success方法,这方法是ajax调用成功后页面调用的逻辑,在这里我们把ajax获得的数据内容放到div里

  6. 在后台逻辑里,ajax调用的页面,我们只是简单的返回一个数组对象,里面有一个text属性的

  7. 运行页面看到div里没有内容的,我们点击按钮触发ajax请求,请求得到结果后,会在div里输入文字内容了

4、简写你对UWSGI和NGINX的理解

uWSGI 是一个Web服务器,实现了WSGI、uwsgi等协议

WSGI是一种Web服务器网关接口,它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范

Nginx是一款轻量级的Web 服务器反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强

Nginx 本身不支持 Flask 框架和 Django 框架,部署需要使用 uWSGI 转接 Nginx 服务器

处理静态文件,并自行返回

5、简写你对MVT的理解 借鉴了MVC的思想,降低各个部分之间的耦合性,不同之处是Django框架 分为了三部分:Model模型,View视图函数,Templates模板,这就是MVT模型

Model(模型):负责业务对象与数据库的对象交互 Viwe(视图):负责业务逻辑,并在适当的时候调用Model和Template Template(模板):负责如何把页面展示给用户

6、简写你对前段后分离的理解

有时候我们需要将内容放在移动端(手机APP)或者其他的设备显示,这时候就可以使用前后端分离了 后端只负责返回数据,不用渲染页面,前端负责渲染数据,一般开发中都是返回JSON数据类型,因为前端和后端都会JSON

7、简写你对django中间件的理解

中间件是一个用来处理Django的请求和响应的框架级别的钩子

它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出

每个中间件组件都负责做一些特定的功能

8、简写你对rest的理解,列出两个rest规则

是一种软件设计风格、规范,提供了一组设计原则和约束条件

(1)APl与用户的通信协议,使用HTTPS协议

(2)对于资源的具体操作类型,由HTTP动词表示 常用的HTTP动词有以下:GET,POST,PUT,DELETE

(3)状态码 服务器向用户返回状态码和提示信息, 常见的有以下:200 表示成功 404 服务器没有此操作 500 服务器内部错误

9、简写django rest如何实现的

自己写REST接口太复杂,因为规范很多,Django拥有丰富的插件,有一个关于REST的插件,使用起来比较方便,文档:www.django-rest-framework.org/

  • 安装REST框架

    pip install djangorestframework

    1、 注册app

  • 基本使用

    REST中的序列化类可以进行数据格式的转换,例如将Python中的字典转换成JSON数据格式。 json序列化:实体类(或字典)与json格式字符串转换

    1、 创建Serializer类

    在应用当中创建serializers文件用来编写序列化类 需要继承 ModelSerializer或HyperlinkedModelSerializer,后者会生成url路由

    from rest_framework import serializers
    from store.models import *
    
    
    class GoodsSerializer(serializers.ModelSerializer):
        class Meta:
            model = Goods
            fields = "__all__"
    复制代码
    

    Serializer内部类Meta属性解释:

    (1)model:对应的model类

    (2)fields:model类要序列化的属性 “all” 表示所有属性

    (3)depth:关联对象序列化的深度,默认只序列化关联对象的id,设置为1后序列化关联对象所有filelds属性

    2、创建视图

    from rest_framework import viewsets
    from api.serializes import *
    
    class GoodsViewSet(viewsets.ModelViewSet):
        queryset = Goods.objects.all()
        serializer_class = GoodsSerializer
    复制代码
    

    这里指定将queryset数据使用serializer_class序列化为json数据

    3、路由指出

    from rest_framework.routers import DefaultRouter
    
    # 创建DRF相关的路由
    router = DefaultRouter()
    router.register("rest/goods/", api_view.GoodsViewSet)
    urlpatterns += router.urls