没有系统的输入其实都是在浪费时间

之前谈到一些无关的信息不要关注,因为对自己没有用。
今天系统的说下为什么对自己没有用

原因一: 知识不够系统

平常我们输入的信息,有些会被我们忘记,有些我们理解后会变成知识。但是变成知识也不够
这个信息即使能变成知识也无法和你大脑中的其他已经掌握的知识互联起来,这样你将来需要使用这个知识点的时候,就无法提取。

简单的说就是没有形成知识晶体。

原因二 无法重现和加强

知识只是自己完成一次输入,和多次提取之后,才能形成能力。

但是平常琐碎的知识,往往是没有机会来实践的。也就是说,即使你存储进大脑,你也没有什么机会使用他,不经过多次提取,你就无法把知识变成能力。

好比你虽然会背很多武功秘籍,但打架你还是外行..因为你没有练习过。

原因三 对现实无用

在现实生活中,你获取知识肯定是想形成能力来完成特定事情。
问题就来了,事件的万物都是非常复杂的,任何简单的事情想做好都需要你在该领域的各个层面精通,否则你就是业余。
拿炒菜举例子,大家都能炒一炒。但肯定都没专业厨师好。 因为厨师经历过系统+训练

而你掌握的零碎的知识对现实是没有用的。既然如此,你何必浪费时间在这些知识上呢。

DRF 学习笔记

DRF View

Model

from django.db import model

serializer.Serializer  比这个更好的是  serializer.ModelSerializer 

下面是可以继承的mixin

mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,

他们分别对应的前端请求是 比如说 axios.patch

post
get + id 
patch
delete
get + 参数

这是通用的

GenericViewSet 

这是是终极大boss

ModelViewSet

关于过滤

下面是重写 get_queryset 方式获取的过滤功能

def get_queryset(self):
    q = MyApartment.objects.all()

    price_min = self.request.query_params.get("price_min", 0) # 0 是默认值

    if price_min:
        queryset = q.filter(price__gt=int(price_min)) #django 语法
        return queryset

下面是使用filter 文件来过滤

class Roomfilters(django_filters.rest_framework.FilterSet):
'''
房间的过滤类
'''
price_min = django_filters.NumberFilter(name='price',lookup_expr='gte')
price_max = django_filters.NumberFilter(name='price',lookup_expr='lt')
district = django_filters.CharFilter(name='district',lookup_expr='icontains') #前面加i忽略大小写

class Meta:
    model = MyApartment
    fields = ['price_min','price_max','district']

搜索

filter_backends = (DjangoFilterBackend,filters.SearchFilter,filters.OrderingFilter)

search_fields = ('district','rooms')  # ^[email protected]$ 分别代表 startwith /exact match/Full search/ regex

排序

filter_backends = (DjangoFilterBackend,filters.SearchFilter,filters.OrderingFilter)

ordering_fields = ('price')

记Django 的一个大坑,账户密码明明是对的,但是无法登录

记Django 的一个大坑,账户密码明明是对的,但是无法登录

在创建超级用户的时候

python manager.py createsuperuser 

你如果创建用户成功了,但是你的密码和用户名比较像,他是不会提醒你的!,但是你如果想登录,他总是说你密码错误,我在这里卡了2天,硬是找不到原因,最终我使用

python manger.py changepassword username

来修改密码但时候,他就说我新密码和用户名太像不行!吗的为什么不在创建时候提醒我!

安装xadmin for Django 2 的时候慢的处理方法

在尝试安装xadmin for Django2 的时候,pip install [email protected] 命令非常慢!不知道怎么办,翻墙太麻烦 后来通过国内的 gitee 中转解决了。。 注意必须用 https 来安装。。

pip install git+https://gitee.com/woooms/django-xadmin-2

还有在配置uwsgi 配置文件的时候老是忘记查看虚拟环境路径的命令

echo $VIRTUAL_ENV

Vue 解决跨域问题!

跨域是一个超级麻烦的事情!

第一种情况

The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' 

看到提示有这样的,说明你的reseponse 里面 Access-Control-Allow-Origin 必须是一个确定的网址,而不是直接写一个 * ,

第二种情况,干脆说你没有 Access-Control-Allow-Origin ,这时候需要 flask 手动返回

@app.after_request
def after_request(response):
  # response.headers.add('Access-Control-Allow-Origin', 'http://localhost:8080')
  response.headers.add('Access-Control-Allow-Credentials', 'true')
  response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization,X-Requested-With')
  response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
  return response

‘list’ object has no attribute ‘rsplit’ admin

当我尝试登录 xadmin的时候报错,而这个错误昨天还没有,我猜和缓存有点关系

‘list’ object has no attribute ‘rsplit’

well, 实际上我自己通过在源码打断点的方式找到了错误原因。。

不知道我为什么在这里加了一个数组。。。我太2了!,下次应该早点从报错的根源哪里打断点开始分析,免得浪费时间
AUTHENTICATION_BACKENDS = (
‘users.views.CustomBackend’,
[‘django.contrib.auth.backends.ModelBackend’] #这是默认的设置
)