Django学习日记6

谭健柏
2023-12-01

1.ViewSet
解析:ViewSet主要通过继承ViewSetMixin来实现在调用as_view()时传入字典[比如{‘get’:‘list’}]的映射处理工作。

2.APIView
解析:DRF框架的视图的基类是APIView,APIView的基本使用和View类似:
[1]Django默认的View请求对象是HttpRequest,REST framework的请求对象是Request。
[2]Django默认的View响应对象是HttpResponse[以及子类],REST framework的响应对象是Response。

3.ModelSerializer
解析:像Django提供的Form类和ModelForm类一样,REST framework包括Serializer类和ModelSerializer类。ModelSerializer类是创建序列化器类的快捷方式:
[1]一组自动确定的字段。
[2]默认简单实现的create()和update()方法。

4.request.POST和request.data区别
解析:
[1]request.POST:只处理表单数据只适用于’POST’方法。
[2]request.data:处理任意数据适用于’POST’,'PUT’和’PATCH’方法。

5.包装[wrapping]API视图
解析:
REST框架提供了两个可用于编写API视图的包装器[wrappers]:
[1]用于基于函数视图的@api_view装饰器。
[2]用于基于类视图的APIView类。

6.CSRF保护
解析:Cross Site Request Forgery保护是防止特定类型的攻击的机制,当用户没有注销登出网站并且具有有效的会话时,这种攻击可能发生。在这种情况下,恶意站点可能会在登录会话的上下文中针对目标站点执行攻击操作。

7.CORS
解析:Cross-Origin Resource Sharing是允许客户端与托管在不同域上的API交互的机制。CORS的工作原理是要求服务器包含一组特定的标头信息,允许浏览器确定是否和何时允许跨域请求。

8.Django REST Framework bulk
解析:The django-rest-framework-bulk package包实现通用视图mixins以及一些常见的具体通用视图,以允许通过API请求应用批量操作。

9.Django Rest Multiple Models
解析:Django Rest Multiple Models提供了通过单个API请求发送多个序列化模型和/或者查询集的通用视图[和mixin]。

10.ViewSet
解析:ViewSet只是一种基于类的视图,它不提供任何方法处理程序[比如.get()或.post()],而是提供诸如.list()和.create()之类的操作。ViewSet的方法处理程序仅使用.as_view()方法绑定到完成视图的相应操作。

11.Routers
解析:

from rest_framework import routers
router = routers.SimpleRouter()
router.register(r'users', UserViewSet)
router.register(r'accounts', AccountViewSet)
urlpatterns = router.urls

12.SaltStack
解析:Salt一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。Salt底层采用动态的连接总线,使其可以用于编配,远程执行,配置管理等等。

13.Vue.js和Django项目跨域问题
解析:
[1]一种是在VueJS层上做转发[proxyTable]
[2]另一种是在Django层注入header

14.virtualenv
解析:

pip install virtualenv
virtualenv --version
cd my_project
virtualenv my_project_env
virtualenv -p /usr/bin/python2.7 my_project_env
source my_project_env/bin/activate
deactivate

说明:使用virtualenv的一个缺点是每次开启虚拟环境之前要去虚拟环境所在目录下的bin目录下source一下activate,这就需要记住每个虚拟环境所在的目录。[pip3 install virtualenvwrapper]

15.virtualenvwrapper
解析:

pip install virtualenvwrapper-win
设置WORKON_HOME,默认为%USERPROFILE%\Envs

常用命令,如下所示:

mkvirtualenv env-name # 创建虚拟环境
mkvirtualenv -p python3.4 env-name  # 指定Python的版本号
mkvirtualenv env-name  --system-site-packages  # 可以使用虚拟环境的外部的模块
workon env-name # 进入虚拟环境
deactivate # 离开虚拟环境
rmvirtualenv env-name # 删除虚拟环境
lsvirtualenv # 列出虚拟环境
cdvirtualenv # 进入到虚拟环境所在的目录
cdsitepackages  # 直接进到site-packages目录
lssitepackages  # 显示site-packages目录中的内容

16.MySQL新建数据库
[1]字符集:utf8 – UTF-8 Unicode
[2]排序规则:utf8_general_ci

17.设置Django连接MySQL数据库
解析:

DATEBASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mxshop',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'OPTIONS': {'init_command': 'SET storage_engine=INNODB;'}
    }
}

18.django-rest-framework-jwt
解析:JSON Web Token Authentication support for Django REST Framework.

19.DRF-extensions
解析:DRF-extensions is a collection of custom extensions for Django REST Framework.

20.information_schema和performance_schema数据集
解析:information_schema数据库跟performance_schema一样,都是MySQL自带的信息数据库。其中,performance_schema用于性能分析,而information_schema用于存储数据库元数据[关于数据的数据],例如数据库名、表名、列的数据类型、访问权限等。

21.数据库MySQL
解析:保存有账户信息,权限信息,存储过程,时区等信息。
说明:安装MySQL数据库后系统自带有三个数据库INFORMATION_SCHEMA、MYSQL、PERFORMANCE_SCHEMA。

22.AUTH_USER_MODEL = 'users.UserProfile’
解析:为了让Django能够识别使用自定义的用户模型,必须要在settings.py中设置自定义模块位置。

23.null=True, blank=True
解析:
[1]null是针对数据库而言,如果null=True,表示数据库的该字段可以不填,用NULL填充。
[2]blank是针对表单的,如果blank=True,表示表单填写该字段的时候可以不填。

24.class Meta
解析:class Meta为嵌套类,主要目的是给上级类添加一些功能,或者指定一些标准。如下所示:
[1]abstract = True:将该基类定义为抽象类,即不必生成数据库表单。
[2]db_table = ‘XXX’:指定该类的数据库表单名字。
[3]ordering = [‘XXX’]:按照指定的字段进行数据库的排序。

25.django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database 'default’
解析:删掉数据库中的所有表,重新makemigrations和migrate。

参考文献:
[1]Django REST framework中文文档:https://q1mi.github.io/Django-REST-framework-documentation/
[2]Django:https://www.djangoproject.com/
[3]Django REST framework:https://www.django-rest-framework.org/
[4]Django Rest Framework教程及API向导:https://www.cnblogs.com/bayueman/p/6647628.html
[5]owais/django-webpack-loader:https://github.com/owais/django-webpack-loader
[6]Vue CLI:https://cli.vuejs.org/zh/
[7]ariera/django-vue-template:https://github.com/ariera/django-vue-template
[8]gtalarico/django-vue-template:https://github.com/gtalarico/django-vue-template
[9]Gerapy/Gerapy:https://github.com/Gerapy/Gerapy
[10]tmpbook/django-with-vuejs:https://github.com/tmpbook/django-with-vuejs
[11]Vue+Django REST framework打造生鲜电商项目:https://coding.imooc.com/class/chapter/131.html#Anchor
[12]我如何使用Django+Vue.js快速构建项目:https://zhuanlan.zhihu.com/p/25080236
[13]SaltStack:http://docs.saltstack.cn/
[14]Ansible自动化运维教程:https://www.w3cschool.cn/automate_with_ansible/
[15]Ansible:https://github.com/ansible
[16]celery.beat:https://docs.celeryproject.org/en/latest/reference/celery.beat.html
[17]celery/django-celery:https://github.com/celery/django-celery
[18]linuxeryt/django_singlepage_with_vue:https://github.com/linuxeryt/django_singlepage_with_vue
[19]2018年不容错过的Django全栈项目YaDjangoBlog:https://zhuanlan.zhihu.com/p/33903527
[20]virtualenvwrapper 4.8.5.dev5:https://virtualenvwrapper.readthedocs.io/en/latest/
[21]Virtualenv:https://virtualenv.pypa.io/en/latest/
[22]twz915/DjangoUeditor3:https://github.com/twz915/DjangoUeditor3/
[23]kaleidos/django-mathjax:https://github.com/kaleidos/django-mathjax
[24]jpadilla/django-rest-framework-jwt:https://github.com/jpadilla/django-rest-framework-jwt
[25]Throttling:https://www.django-rest-framework.org/api-guide/throttling/
[26]chibisov/drf-extensions:https://github.com/chibisov/drf-extensions
[27]DRF-extensions:http://chibisov.github.io/drf-extensions/docs/#drf-extensions

 类似资料: