Django学习日记19

1.个性化代码样例
解析:内置的API文档包含自动生成的代码样例,为每一个可利用的API客户端类库。可以定制化这些样例,通过子类DocumentationRenderer,设置languages为希望支持的语言列表:

from rest_framework.renderers import DocumentationRenderer
class CustomRenderer(DocumentationRenderer):
    languages = ['ruby', 'go']

对于每种语言,需要提供一个intro模板,详细的安装说明等等,以及一个用于发出API请求的通用模板,可以用各个请求的详细信息填充该模板。有关示例,请参考绑定语言的模板。

2.pkg_resources.VersionConflict: (prompt-toolkit 2.0.1 (d:\anaconda3\lib\site-packages), Requirement.parse(‘prompt-toolkit<2.0.0,>=1.0.15’))
解析:pip install prompt-toolkit==1.0.15

3.user = serializers.HiddenField(default=serializers.CurrentUserDefault())
解析:HiddenField的值不依靠输入,而需要设置默认的值,不需要用户post数据过来,也不会显式返回给用户,最常用的就是user。在登录情况下,进行一些操作,假设一个用户去收藏了某一门课,那么后台应该自动识别这个用户,然后用户只需要将课程的id post过来,那么这样的功能,配合CurrentUserDefault()实现。

# 这样就可以直接获取到当前用户
user = serializers.HiddenField(
	default=serializers.CurrentUserDefault())

4.Serializer relations
解析:
[1]StringRelatedField
[2]PrimaryKeyRelatedField
[3]HyperlinkedRelatedField
[4]SlugRelatedField
[5]HyperlinkedIdentityField

5.PrimaryKeyRelatedField
解析:
[1]queryset:The queryset used for model instance lookups when validating the field input. Relationships must either set a queryset explicitly, or set read_only=True.
[2]many:If applied to a to-many relationship, you should set this argument to True.
[3]allow_null:If set to True, the field will accept values of None or the empty string for nullable relationships. Defaults to False.
[4]pk_field:Set to a field to control serialization/deserialization of the primary key’s value. For example, pk_field=UUIDField(format=‘hex’) would serialize a UUID primary key into its compact hex representation.

6.ser_obj.validated_data
解析:它中保存经过校验的有效数据。

7.get_queryset()方法
解析:该方法可以返回一个量身定制的对象列表。

8.get_context_data()方法
解析:它可以用于给模板传递模型以外的内容或参数,非常有用。

9.ListView、DetailView、CreateView、UpdateView、FormView、DeleteView
解析:
[1]ListView:展示对象列表[比如,所有用户,所有文章]。
[2]DetailView:展示某个对象的详细信息[比如,用户资料,文章详情]。
[3]CreateView:通过表单创建某个对象[比如,创建用户,新建文章]。
[4]UpdateView:通过表单更新某个对象信息[比如修改密码,修改文字内容]。
[5]FormView:用户填写表单后转到某个完成页面。
[6]DeleteView:删除某个对象。

10.get_object(self)
解析:返回详情视图所需的模型类数据对象,主要用来提供给Mixin扩展类使用。

11.pagination_class
解析:指明分页控制类。

12.filter_backends
解析:指明过滤控制后端。

13.drf-extensions
解析:drf-extensions组件内部提供了DRF的本地内存方式的缓存方式,本地内存方式缓存在项目重启后则会消失。

# 安装
pip3 install drf-extensions
# 导入
from rest_framework_extensions.cache.mixins import CacheResponseMixin
# 使用
class GoodsListViewset(CacheResponseMixin, mixins.ListModelMixin...):
      pass
# 配置
REST_FRAMEWORK_EXTENSIONS = {
    'DEFAULT_CACHE_RESPONSE_TIMEOUT': 5
}

14.django-redis
解析:django-redis是一个使Django支持Redis cache/session后端的全功能组件。

15.OAuth2.0接口文档
解析:
[1]OAuth2/authorize:请求用户授权Token
[2]OAuth2/access_token:获取授权过的Access Token
[3]OAuth2/get_token_info:授权信息查询接口
[4]OAuth2/revokeoauth2:授权回收接口
[5]OAuth2/get_oauth2_token:OAuth1.0的Access Token更换至OAuth2.0的Access Token

16.OAuth2.0应用场景
解析:开发者需要根据各自的应用场景,选择适用的OAuth2.0授权流程:
[1]PC端和Web网站,请参考Web网站的验证授权[Authorization Code]
[2]移动端应用可直接使用微博移动SDK,通过呼起微博客户端[未安装微博的会呼起H5授权页]方式授权
[3]H5轻应用,请参考轻应用开发指南
[4]开发者自己在调试阶段,可以使用开发者自身授权

17.AUTHENTICATION_BACKENDS
解析:

AUTHENTICATION_BACKENDS = [
    'social_core.backends.weibo.WeiboOAuth2',
    'social_core.backends.qq.QQOAuth2',
    'social_core.backends.weixin.WeixinOAuth2',
    'django.contrib.auth.backends.ModelBackend',
]

18.social-auth-app-django模块
解析:它是专门用于Django的第三方登录OAuth2协议模块,目前流行的第三方登录都采用了OAuth2协议。安装方式:pip install social-auth-app-django

19.配置Redis缓存
解析:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

20.JIRA
解析:JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。

21.Docker Compose
解析:Docker Compose是Docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用Compose可以通过YAML文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。

22.onpremise
解析:Official bootstrap for running your own Sentry with Docker.

23.cron
解析:计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到cron服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的任务。在线Cron表达式生成器:http://cron.qqe2.com/

24.Raven
解析:Raven是Sentry的客户端,它对很多框架都有直接支持,包括Django和Flask,并且顺带支持与WSGI兼容的网络应用。

25.AutoField
解析:int自增列,必须填入参数primary_key=True。如果model中没有自增列,那么会自动创建一个列名为id的列。

参考文献:
[1]django rest framework serializers小结:https://blog.csdn.net/l_vip/article/details/79156113
[2]Serializer relations:https://www.django-rest-framework.org/api-guide/relations/
[3]DRF的十大组件:https://www.jianshu.com/p/c4a73726bc44
[4]chibisov/drf-extensions:https://github.com/chibisov/drf-extensions
[5]DRF-extensions:https://chibisov.github.io/drf-extensions/docs/
[6]django-redis中文文档:https://django-redis-chs.readthedocs.io/zh_CN/latest/
[7]OAuth2.0概述:https://open.weibo.com/wiki/授权机制说明
[8]使用social-app-django集成第三方登录:https://blog.starmeow.cn/detail/9188905e74c28e489b44e954ec0b9bca/
[9]centos7下搭建sentry错误日志服务器:http://projectsedu.com/
[10]onpremise:https://github.com/getsentry/onpremise

发布了364 篇原创文章 · 获赞 422 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/shengshengwang/article/details/104026243
今日推荐