django
文章平均质量分 55
我就是我,不一样的烟火
这个作者很懒,什么都没留下…
展开
-
设计模式:命令模式 & 项目案例
命令模式是行为模式的一种“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将**“行为请求者”与“行为实现者”**解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)创建型模式:聚焦如何创建对象结构型模式:聚焦在类之间如何结合行为型模式:聚焦在方法上如何结合完成功能命令模式应该有一下几个角色:Command:定义命令的接口,声原创 2021-12-16 17:58:14 · 590 阅读 · 0 评论 -
Django 深入浅出认证系统
cookie session解决问题:比较:Session 存储引擎存储session的容器,封装一系列方便操作session_key或session的方法,例如get、save、create等,同时实现__getitem__、setitem、delitem、__contains__方法,实现字典操作session。Django 有哪些存储容器?根据配置文件选用:SESSION_ENGINEsession的操作:1. 如果操作Session写:request.session["use原创 2021-12-07 19:13:04 · 440 阅读 · 0 评论 -
Django 密码与安全
Django 密码与安全密码是一种用来混淆的技术(把用公开的、标准的信息编码表示的信息通过一种变换手段,将其变为除通信双方以外其他人所不能读懂的信息编码)。就是将正常的(可识别的)信息转变为无法识别的信息。但这种无法识别的信息部分是破解(密码泄漏)。密码的设计需遵守 柯克霍夫原则:即使密码系统的任何细节已为人悉知,只要密匙(key,又称密钥或秘钥)未泄漏,它也应是安全的。Django 如何存储密码?User 对象的 password 属性是如下这种格式:<algorithm>原创 2021-06-21 19:20:26 · 1377 阅读 · 0 评论 -
(一) rest_framework 视图入口
django_rest_frameworkAPIView CBV 与路由查找django路由匹配都是一个路由与一视图函数对应,所以对于cbv写法,最终也是返回与之对应的函数。当调用as_view()方法时,APIView 将调用父类的 as_view()方法。def as_view(cls, **initkwargs):...view = super().as_view(**init...原创 2020-03-05 10:48:00 · 86 阅读 · 0 评论 -
(二) rest_framework 认证源码流程与配置
源码流程:dispatch函数执行当寻找对应路由的视图函数之前,首先执行 self.initialize_request(request, *args, **kwargs)# Get the appropriate handler method if request.method.lower() in self.http_method_names: handler = ...原创 2020-03-07 16:54:01 · 100 阅读 · 0 评论 -
(三) rest_framework 版本控制
流程:执行self.initial(request, *args, **kwargs) 方法获取版本version, scheme = self.determine_version(request, *args, **kwargs)settings 文件全局配置: 'DEFAULT_VERSION': 'v1', #默认版本号 'VERSION_PARAM': 'ver...原创 2020-03-08 16:11:32 · 178 阅读 · 0 评论 -
(四) rest_framework权限与限流
权限class Mypermission(BasePermission): message = '错误' def has_permission(self, request, view): token = request.GET.get("token") if token == '1': return True ...原创 2020-03-08 15:47:51 · 139 阅读 · 0 评论 -
(五) rest_framework 普通分页与加密分页
分页两类,一类是普通的分页,另外是加密的分页(页码加密并且只能跳转上页与下一页)核心源代码:results = list(queryset[offset:offset + self.page_size + 1])普通分页:from rest_framework.pagination import PageNumberPagination对于指定的参数,可全局配置或者继承PageNumber...原创 2020-03-12 22:52:00 · 80 阅读 · 0 评论 -
(六) rest_framework 分页
分页分类两类,一类是普通的分页,另外是加密的分页(页码加密并且只能跳转上页与下一页)核心源代码:results = list(queryset[offset:offset + self.page_size + 1])普通分页:from rest_framework.pagination import PageNumberPagination对于指定的参数,可全局配置或者继承PageNum...原创 2020-03-12 22:49:57 · 86 阅读 · 0 评论 -
(七) rest_framework 序列化与源码实现
Serializer 类指定序列化需要返回的 field,source为指定orm指定字段,可以通过. 获取外键关联对象。get_xxx_display 获取CharField choices 对应的值SerializerMethodField:自定义方法,执行实力化对象的 get_obj() 方法每个对象触发field类的to_representation方法class Accou...原创 2020-03-09 16:52:10 · 221 阅读 · 0 评论 -
(八) rest_framework GenericAPIView/GenericViewSet/ ModelViewSet 源码解析
GenericAPIView对APIView进行封装,添加分页,获取queryset等方法。GenericAPIView 总体来说只是把获取的方法赋值给类变量,需要时直接调用内部方法。from rest_framework.generics import GenericAPIViewclass AllAccounts(GenericAPIView): queryset = Acc...原创 2020-03-12 23:15:01 · 194 阅读 · 0 评论 -
(十) rest_framework GenericAPIView/GenericViewSet/ ModelViewSet 解析
GenericAPIView对APIView进行封装,添加分页,获取queryset等方法。GenericAPIView 总体来说只是把获取的方法赋值给类变量,需要时直接调用内部方法。from rest_framework.generics import GenericAPIViewclass AllAccounts(GenericAPIView): queryset = Acc...原创 2020-03-12 23:16:00 · 158 阅读 · 0 评论 -
Django时间Field与datetime与time解读
django相关FieldDateTimeField 和 DateField 和 TimeField,存储的内容分别对应着datetime(), date(), time()三个对象。常用参数:auto_now true:保存时每次更新, auto_now_add true:只创建时更新自动添加的默认值:...原创 2021-02-25 20:49:00 · 882 阅读 · 0 评论 -
django_celery_beat
django_celery_beat 使用引入django-celery-beat包INSTALLED_APPS = [ ... 'django_celery_beat' ...]定义celery appfrom __future__ import absolute_importimport osfrom celery import Celeryos.e...原创 2020-03-04 20:07:24 · 1914 阅读 · 2 评论 -
mxonline 总结
课程相关课程列表课程的剪接课程详情课程章节课程关联的授课机构,课程关联的授课教师热门课程相关课程推荐课程留言需要登录若未登录,返回到登录页面留言失败反馈信息留言成功,异步刷新页面讲师相关教师简介讲师所有课程热门讲师授课机构相关机构简介机构所有课程机构所有教师用户相关1.收藏收藏前检查用户登录状态 实现异步功能 课程,教师,机构的收藏2...原创 2019-02-16 12:33:16 · 555 阅读 · 2 评论 -
Django 下载excel,支持自定义表头,根据数据库某字段生成多个sheet
工作需要,需要做下载excel的功能,同时根据数据库的某个字段完成多sheet的功能。由于用处较多,封装了一个函数。add_worksheet: 为生成多个sheet的方法from io import BytesIOimport xlsxwriterdef download_excel(cursor, sql_field_index=False, custom_headers=Fals...原创 2020-04-01 15:56:42 · 328 阅读 · 0 评论 -
第一个Django项目
创建Django项目:用命令行的方式:创建项目:打开终端,使用命令:django-admin startproject [项目名称]即可创建。比如:django-admin startproject first_project。创建应用(app):一个项目类似于是一个架子,但是真正起作用的还是app。在终端进入到项目所在的路径,然后执行python manage.py startapp [...原创 2019-02-16 14:31:00 · 89 阅读 · 0 评论 -
Django url分发器
视图:视图一般都写在app的views.py中。并且视图的第一个参数永远都是request(一个HttpRequest)对象。这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。比如这个请求是添加一篇博客,那么可以通过request来接收到这些数据,然后存储到数据库中,最后再把执行的结果返回给浏览器。视图函数的返回结果必须是HttpRespon...原创 2019-02-16 14:37:32 · 371 阅读 · 0 评论 -
Django 模板相关
Django 模板相关视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面。目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言。当然也可以配置Django支持Jinja2等其他模板引...原创 2019-02-16 14:44:51 · 99 阅读 · 0 评论 -
Django 模版过滤器
模版常用过滤器在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模版中,则是通过过滤器来实现的。过滤器使用的是|来使用。比如使用add过滤器,那么示例代码如下:{{ value|add:"2" }}那么以下就讲下在开发中常用的过滤器。add将传进来的参数添加到原来的值上面。这个过滤器会尝试将值和参数转换成整形然后进行相加。如果转换...原创 2019-02-16 14:51:06 · 185 阅读 · 0 评论 -
Django模版结构优化和加载静态文件
引入模版有时候一些代码是在许多模版中都用到的。如果我们每次都重复的去拷贝代码那肯定不符合项目的规范。一般我们可以把这些重复性的代码抽取出来,就类似于Python中的函数一样,以后想要使用这些代码的时候,就通过include包含进来。这个标签就是include。示例代码如下:header.html我是headerfooter.html我是footermain.html{% includ...转载 2019-02-16 14:54:51 · 165 阅读 · 0 评论 -
Django ListView实现分页
效果:url.pymain-urlsfrom django.urls import path,includeurlpatterns = [ path('admin/', admin.site.urls), path('book/',include('book.urls'))]app-> book.urlsfrom django.urls import pa...原创 2019-04-24 17:12:16 · 920 阅读 · 0 评论 -
xadmin 配置内置User模型
xadmin 配置内置USER模型默认展示想使用xadmin,需要先取消原来User表的内置注册在你的User模型对应的app下创建adminx 文件import xadminfrom django.contrib.auth import get_user_modelclass UserAdmin(object): list_display = ['username', 'e...原创 2019-06-12 10:33:18 · 700 阅读 · 0 评论 -
django操作memcached
1.首先需要在settings.py中配置好缓存CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', }}2.如果想要使用多台机器,那么可以在LOCAT...原创 2018-11-09 17:57:21 · 215 阅读 · 0 评论 -
django ListView
context_object_name = 'posts'. The template default name is ListView 'object_list'from .models import Post,Categoryfrom django.views.generic.list import ListViewfrom django.shortcuts import get_ob...原创 2019-12-03 13:50:00 · 147 阅读 · 0 评论 -
ORM基本操作回顾
连接数据库默认是MySQLdb指定引擎dialect[+driver]: //user:password@host/dbname[?key=value…]:from sqlalchemy import create_engineengine = create_engine("mysql+pymysql://root:root@127.0.0.1/ormreview?charset=utf...原创 2019-04-03 11:04:01 · 184 阅读 · 0 评论 -
Django两天搭建个人博客
传送门:https://github.com/1417766861/django-blog(可直接运行,上面有步骤)效果:首页:侧栏:详情页面:修改头像,资料,文章发布:支持添加标签拖拽粒子背景特效 登陆界面刚发布的新文章:...原创 2019-01-18 15:43:53 · 174 阅读 · 1 评论 -
supervisor 管理uwsgi 进程
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动 重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要 管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可...原创 2019-03-12 17:47:00 · 180 阅读 · 0 评论 -
Mxonline3.6 在阿里云服务器上的部署(uwsgi nginx)
我的项目结构1. 执行`python manage.py migrate`命令,将迁移文件,映射到数据库中,创建相应的表。进入数据库 use mxonline数据库 source /home/Mxonline3-master/mxonline.sql 导入数据2. 执行`python manage.py runserver 0.0.0.0:8000`,然后在你自...原创 2018-12-23 22:00:47 · 330 阅读 · 0 评论 -
基于微信小程序的租房小程序
后台:原创 2019-10-28 17:17:49 · 5964 阅读 · 11 评论