一.基本流程举例: urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^users/', views.HostView.as_view()), ] urls from rest_framework.views import APIView from rest_framework.response import Response class HostView(APIView): def dispatch(self, request, *…
一.GenericAPIView GenericAPIView扩展了APIView,为标准列表和详细视图添加了常见的行为. 提供的每个具体通用视图都是一个GenericAPIView或多个mixin类组合在一起而构建的. 例如: BookView视图类继承自: ListModelMixin:用于显示所有图书 CreateModelMixin:添加一本书 GenricAPIView:继承自APIView,提供as_view()等,获取当前视图类中queryset和serializer_class…
基于 http://www.cnblogs.com/ctztake/p/8419059.html 当用发出请求时 首先执行dispatch函数,当执行当第二部时: #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 self.initial(request, *args, **kwargs) 进入到initial方法: def initial(self, request, *args, **kwargs): """ Runs anything that…
Django _VIEW视图_源码分析…
在django—CBV源码分析中,我们是分析的from django.views import View下的执行流程,这篇博客我们介绍django Rest Framework下的APIView的源码分析. 一.as_view() 我们还是先从URLconfig中入手,由于BookView是一个基于类的视图,所以我们将URL指向as_view()类方法 url(r'books/',views.BookView.as_view()), 此时,我们的BookView已经不是继承自django.vie…
一.admin组件使用 Django本身提供了基于 web 的管理工具.其管理工具是django.contrib的一部分,可在settings.py中的 INSTALLED_APPS 看到: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'dj…
前言 上一篇我们分析了认证的源码,一个请求认证通过以后,第二步就是查看权限了,drf默认是允许所有用户访问 权限源码分析 源码入口:APIView.py文件下的initial方法下的check_permissions def check_permissions(self, request): """ 检查是否应允许该请求.如果请求不被允许,则引发适当的异常. """ for permission in self.get_permissions()…
前言 有时候我们发送手机验证码,会发现1分钟只能发送1次,这是做了频率限制,限制的时间次数,都由开发者自己决定 频率认证源码分析 def check_throttles(self, request): """ 检查是否应限制请求.如果请求受到限制,则引发适当的异常. """ throttle_durations = [] # 1.遍历配置的频率认证类,初始化一个个频率认证类对象(会调用频率认证类的__init__()方法) # 2.频率认证类对象…
一:cbv的源码分析 1.CBV和FBV的区别: - Class Base View   CBV(基于类的视图) - Function Base View   FBV(基于函数的视图) 2.as_view与view的区别: - def as_view: 类的方法 - def view:类方法内部,闭包函数定义:内层函数包含对外部作用域的引用 -def view(request,*args,**kwargs): self = cls(**initkwargs) if hasattr(self,'g…
一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view) 2.as_view方法 as_view是一个类方法,实际上是一个闭包函数(内层函数包含对外层作用域的使用) 请求来了以后,调用as_view方法,调用函数中的view方法,view方法是调用了dispatch方法 @classonlymethod def as_view(cls, **initkwargs): def view(reque…
序列化与反序列化   一般后端数据返回给前端的数据格式都是json格式,简单易懂,但是我们使用的语言本身并不是json格式,像我们使用的Python如果直接返回给前端,前端用的javascript语言是识别不出的,所以我们需要把python语言转换为通用的json格式的数据,在django中就是将orm模型或者queryset对象转换成字典,再由字典转换成json,整个过程就是序列化.   当用户通过在form表单中填写的数据,发送请求给后端,将数据提交给后端数据库,这个过程就是反序列化.反序列…
Django 的 CBV&FBV Django FBV, function base view  视图里使用函数处理请求 url url(r‘^users/‘, views.users), views from django.shortcuts import HttpResponse import json def users(request): user_list = ['lcg','superman'] return HttpResponse(json.dumps((user_list)))…
前言: 分页大家应该都很清楚,今天我来给大家做一下Django的rest_framework的分页组件的分析:我的讲解的思路是这样的,分别使用APIview的视图类和基于ModelViewSet的视图类两种方式实现分页的功能,同时我也会介绍两个分页的类,PageNumberPagination类和LimitOffsetPagination,希望能对大家有所帮助! 今天的博客主要的这样的,先讲解基于APIView类的两种分页类的实现方式,然后在讲解基于ModelViewSet类的两种分页类的实现方…
Django _VIEW视图: 1. 点击as_view方法. 第二步: as_view () 为VIEW 类里定义的,到时候我们定义业务逻辑的类就继承这个VIEW类. view方法内返回的是dispatch方法. dispatch 方法通过getattr 映射相应的request的方法.…
View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. 这一篇文章把所有的layout和widget都统称为view,那么android是如何创建一个view的呢? 一.在代码中直接new出来. 比如说你要创建一个TextView的实例,那么你可以这样写: TextView text = new TextView(c);  //c为context对象,…
当有请求到来之后,先判断请求头content_type是不是[application/x-www-form-urlencoded] --> 如果是则将请求数据赋值给request.body然后解析为字典形式的数据后赋值给request.post 这样我们就可以用request.POST.get('username")获取数据了 --> 如果不是,则直接将请求数据赋值给request.body之后并不赋值给request.post,此时POST内的数据为空…
一 : 架构与程序 软件架构是一种思维方式,而程序只是实现思维方式的一种手段,代码固然重要,但是若没有整体的思维架构,一切程序都如水中浮萍. 二 : 框架如何设计 暂时抛开Android Framework框架不谈,我们回想一下JavaWeb的核心思想mvc架构.what?这又是什么东西?好吧,不知道mvc架构的百度一下,只能帮你这些了....... mvc主要是模型.视图.控制器.模型层以Entity,视图层jsp,控制层Action为主的三层架构模型,实现业务分离,以及代码解耦.外层通过Ap…
Mesos源码分析(1): Mesos的启动过程总论 Mesos源码分析(2): Mesos Master的启动之一 Mesos源码分析(3): Mesos Master的启动之二 Mesos源码分析(4) Mesos Master的启动之三 Mesos源码分析(5): Mesos Master的启动之四 Mesos源码分析(6): Mesos Master的初始化 Mesos源码分析(7): Mesos-Slave的启动 Mesos源码分析(8): Mesos-Slave的初始化 Mesos源…
一 :Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等. BluetoothDevicePreference.java 顾名思义,蓝牙设备首选项,也就是蓝牙设备的配置信息,比如是否连接,是否配对,是否可见等等.该类继承了preference类,主要是提供获取蓝牙设备及通知蓝牙设备配置信息变化. BluetoothDiscoverableEnabler.…
一:init.rc文件修改 开机后运行一次: chmod 777 /system/bin/bt_config.sh service bt_config /system/bin/bt_config.sh class main user root group root oneshot 开机后等待android启动完成后再运行: service bt_config /system/bin/bt_config.sh class main user root group root disabled one…
一: 进入shell命令界面 adb shell 二:创建目录/cache/recovery mkdir /cache/recovery 如果系统中已有此目录,则会提示已存在. 三: 修改文件夹权限 chmod -R 777 /cache/recovery 四: 把ota文件路径写入/cache/recovery/command文件中 echo "--update_package=系统ota升级包文件路径 " > /cache/recovery/command 如我的OTA升级包…
一:原理分析 主要sendExtraCommand方法中传递两个参数, 根据如下源码可以知道第一个参数传递delete_aiding_data,第二个参数传递null即可. @Override public boolean sendExtraCommand(String command, Bundle extras) { long identity = Binder.clearCallingIdentity(); boolean result = false; if ("delete_aidin…
一:SharedPreference如何使用 此文章只是提供一种数据保存的方式, 具体使用场景请根据需求情况自行调整. EditText添加saveData点击事件, 保存数据. diff --git a/res/layout/activity_voicemail_settings.xml b/res/layout/activity_voicemail_settings.xml index cd7af05..57526f2 100755 --- a/res/layout/activity_voi…
一:如何添加快捷开关 源码路径:frameworks/base/packages/SystemUI/res/values/config.xml 添加headset快捷开关,参考如下修改. Index: res/values/config.xml =================================================================== --- res/values/config.xml (版本 6870) +++ res/values/config.x…
一:如何自定义TextView实现滚动效果 继承TextView基类 重写构造方法 修改isFocused()方法,获取焦点. /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the…
一:aar文件如何引用 系统Settings中引用bidehelper-1.1.12.aar 文件为例 源码地址:packages/apps/Settings/Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := \ $(call all-logtags-files-under, src) LOCAL_MODULE := settings-logtags include $(BUILD_ST…
一:关机菜单添加飞行模式选项 源码路径:frameworks/base/core/res/res/values/config.xml 增加<item>airplane</item> <!-- Defines the default set of global actions. Actions may still be disabled or hidden based on the current state of the device. Each item must be o…
一 : 修改Android系统默认时间 源码路径:frameworks/base/services/java/com/android/server/SystemServer.java 主要变量EARLIEST_SUPPORTED_TIME // The earliest supported time. We pick one day into 1970, to // give any timezone code room without going into negative time. pri…
一 :系统启动流程图 从下往上依次启动linux kernel -->zygote-->SystemServer-->NativeService-->AndroidService 二 : IPC通信 IPC(Inter-Process Communication)通信,是跨越两个不同进程(Process)之通信. 一般而言,一个Android应用程序里的各组件(如Activity.Service等)都在同一个进程里执行.这种在同一进程内的通信,又称为短程通信,意味着,两个Activ…