Python Road
__tian__
我走过的路,每一步都算数
展开
-
使用Python获取系统相关信息
一、psutil模块psutil可以获取系统内存、磁盘、网络等信息。二、基本使用https://pypi.org/project/psutil/三、使用实例:获取一些系统相关信息import psutilimport pynvmldef get_gpu_info(): try: pynvml.nvmlInit() deviceCount = pynvml.nvmlDeviceGetCount() gpu_list = []原创 2020-07-20 15:45:45 · 679 阅读 · 0 评论 -
搜索引擎实验报告
一、实训内容搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上采集信息,在对信息进行组织和处理后,为用户提供检索服务,将检索的相关信息展示给用户的系统。网络中用于各种功能的搜索引擎非常多,在求职,找工作方面,智联招聘、拉勾网等也比较优秀,但数据都过于集中,却缺少重点。对于即将毕业的大学生,要花费大量的时间在多个网站投递简历,无疑增加了学生们的工作量。这次实训,我们想要实现的就是整合...原创 2019-12-12 13:56:18 · 5339 阅读 · 0 评论 -
基于用户的协同过滤算法
最近在做一个古诗推荐功能,以前只会根据点击量,收藏量进行排序,给用户展示点击量、排行量前几的数据。最近新发现一个算法——基于用户的协同过滤算法。原理:1、找到与目标用户兴趣相投的用户。2、根据找到的用户集合中,相似用户喜欢的,而目标用户没有听说过的物品,进行推荐。一、首先连接数据库获取数据import pymysqlimport json# 连接databaseco...原创 2019-11-08 16:05:08 · 1506 阅读 · 0 评论 -
权限管理插件
本质上,一个可以访问的url等于一个权限权限管理数据库表结构设计用户表class User(models.Model): name = models.CharField(max_length=32) pwd = models.CharField(max_length=32) roles = models.ManyToManyField(to="Roles")...原创 2019-08-05 08:19:31 · 833 阅读 · 0 评论 -
一、Flask视图和URL
1、第一个Flask程序from flask import Flaskapp = Flask(__name__)# @app.route:是一个装饰器# @app.route('/')就是将url中的/映射到hello_world这个视图函数上面# 以后你访问我这个网站的/目录的时候,会执行hello_world这个函数,然后将这个函数的返回值# 返回给浏览器。@app.ro...原创 2019-08-20 23:08:39 · 429 阅读 · 0 评论 -
Flask之jinja2
1、jinja2的简单使用类似Django中的模板引擎,渲染模板,jinja2更方便一点render_template,默认在templates文件夹下template_folder='templates',@app.route('/list/')def my_list(): return render_template('posts/list.html')2...原创 2019-08-21 09:33:07 · 495 阅读 · 0 评论 -
在线教育项目(四)之授课机构功能实现
功能:授课机构列表(可分页,可按类别,地区筛选,可按学习人数和课程数排序) 机构详情页(可收藏机构,有哪些课程,讲师,以及机构介绍) 可咨询课程(使用ModelForm)对应的urlurlpatterns = [ #列表 url(r'^list/', OrgView.as_view(), name='org_list'), #咨询 url...原创 2019-08-12 17:57:17 · 666 阅读 · 0 评论 -
在线教育项目(五)之课程功能实现
功能:课程列表(分页,排序,课程推荐) 课程详情页(收藏,章节展示,资源展示,评论)url配置:urlpatterns = [ # 课程列表 url(r'^list/', CourseListView.as_view(), name='course_list'), # 课程详情 url(r'^detail/(?P<course_id>\d+...原创 2019-08-12 19:45:19 · 1291 阅读 · 0 评论 -
在线教育项目(六)之讲师功能实现
功能:分页,排序 讲师详情(有哪些课程,属于哪个机构,讲师排行榜)url配置: # 教师列表 url(r'^teacher/list/$', TeacherListView.as_view(), name='teacher_list'), # 教师详情页 url(r'^teacher/detail/(?P<teacher_id>\d+)/$'...原创 2019-08-12 20:08:14 · 500 阅读 · 0 评论 -
在线教育项目(七)之个人中心和全局搜索功能
功能:用户信息修改 全局搜索功能 我的课程 我的收藏(删除收藏) 我的消息1、个人信息修改部分还存在一些问题,教程修改邮箱需要激活邮箱,我的想法比较简单,和其他用户信息一起提交,校验邮箱是否重复(未实现)。class InfoView(LoginRequiredMixin, View): def get(self, request): return...原创 2019-08-12 20:24:55 · 492 阅读 · 0 评论 -
在线教育项目(八)
一、全局404 和500配置1、icourse/urls:from MxOnline.settings import STATIC_ROOTurlpatterns = [#静态文件 url(r'^static/(?P<path>.*)', serve, {"document_root": STATIC_ROOT }),]# 全局404页面配置handler...原创 2019-08-12 20:52:54 · 1135 阅读 · 0 评论 -
DRF通用view
几种view以及他们之间的关系View是Django中的APIViewAPIView是对Django中View的封装,和View相比,APIView大致有以下不同:1.传递给处理方法的请求是DRF的Request实例,而不是Django的HttpRequest实例;2.响应并返回的是DRF的Response对象,而不是Django的HttpResponse对象;4.会对...原创 2019-08-15 16:57:39 · 436 阅读 · 0 评论 -
DRF搜索、分页、排序、过滤的实现
一、搜索搜索REST framework有提供了一个比较简洁的搜索功能给我们使用。class GoodsListViewSet(viewsets.ModelViewSet): #数据 queryset = Goods.objects.all() # 指定序列化的类 serializer_class = GoodsSerializer #配置搜索...原创 2019-08-15 12:35:56 · 1959 阅读 · 0 评论 -
django.template.exceptions.TemplateDoesNotExist: rest_framework/api.html
django.template.exceptions.TemplateDoesNotExist: rest_framework/api.html在setting.py文件中的 INSTALLED_APPS进行rest_framework 注册原创 2019-08-15 11:10:19 · 559 阅读 · 0 评论 -
在线教育项目(一)
github地址:https://github.com/tianmingbo/icourse一、需求分析和表结构设计1.1、需求分析系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心。 个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。 导航栏: 公开课,授课讲师,授课机构,全局搜索。 点击公开课–> 课程列表,排序-...原创 2019-08-05 21:25:00 · 3949 阅读 · 0 评论 -
在线教育项目(二)之xadmin的使用
一、安装1、pip install xadmin(一般人都成功不了)2、在线安装 pip install git+git://github.com/sshwsfc/xadmin.git3、本地安装:下载地址:https://github.com/sshwsfc/xadmin二、使用1、把xadmin放入项目目录下,注册app,还有一个crispy_forms,是xadm...原创 2019-08-05 23:20:53 · 627 阅读 · 0 评论 -
Django开发调试模块
django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息。安装:pip3 install django-debug-toolbar配置:1、首先在settings.py文件中注册app,在中间件中加入中间件,尽量靠前INSTALLED_APPS = [ … 'debug_...原创 2019-08-08 20:44:00 · 496 阅读 · 0 评论 -
Django使用缓存
缓存:Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用缓存。缓存工作原理:对于给定的网址,尝试从缓存中找到网址,如果页面在缓存中,直接返回缓存的页面,如果缓存中没有,一系列操作(比如查数据库)后,保存生成的页面内容到缓存系统以供下一次使用,然后返回生成的页面内容。Django中提供了6种缓存方式:开发调试...原创 2019-08-08 21:06:13 · 526 阅读 · 0 评论 -
Pycharm连接服务器&调试
目录一、连接1.1、Pycharm菜单栏,如下图所示,依次点击 Tools -> Deployment -> Configration1.2 配置连接服务器1.3、上传代码,保持同步二、配置解释器2.1、添加解释器三、运行一、连接1.1、Pycharm菜单栏,如下图所示,依次点击 Tools -> Deployment -> Confi...原创 2019-08-18 20:27:09 · 1588 阅读 · 0 评论 -
RESTful 规范
一、什么是RESTfulREST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 所有的数据,不管是通过网络获取的还是操作数据库获得(增删...原创 2019-08-13 20:43:29 · 345 阅读 · 0 评论 -
DRF之序列化
一、作用将数据序列化或反序列化 对提交的数据进行校验 对提交的数据进行处理二、返回json的方法创建表:class Publisher(models.Model): name = models.CharField(max_length=32, verbose_name="名称", unique=True) address = models.CharFiel...原创 2019-08-13 21:33:53 · 398 阅读 · 0 评论 -
Flask-WTF和文件上传
目录1、WTForms①使用示例:②常用的验证器:③自定义校验规则2、文件上传①示例②对上传文件进行表单校验1、WTForms类似Django中的forms,进行数据校验,返回错误信息,模板渲染。第一个功能是做表单验证,把用户提交上来的数据进行验证是否合法。第二个就是做模版渲染。①使用示例:forms.pyfrom wtforms impor...原创 2019-08-26 20:22:10 · 1162 阅读 · 0 评论 -
Flask视图进阶
1、add_url_rule这个方法用来添加url与视图函数的映射。如果没有填写`endpoint`,那么默认会使用`view_func`的名字作为`endpoint`。以后在使用`url_for`的时候,就要看在映射的时候有没有传递`endpoint`参数,如果传递了,那么就应该使用`endpoint`指定的字符串,如果没有传递,那么就应该使用`view_func`的名字。def my...原创 2019-08-21 20:28:19 · 260 阅读 · 0 评论 -
DRF实现注册
一、功能描述:用户提交手机号,获取验证码,输入密码后,注册并登录。二、发送短信验证码1、首先要校验手机号是否合法,是否已经注册,还要限制发送验证码不能过于频繁。# 发送短信序列化class SmsSerializer(serializers.Serializer): mobile = serializers.CharField(max_length=11) d...原创 2019-08-16 18:29:47 · 2128 阅读 · 1 评论 -
Django中的信号
信号Django 提供一个“信号分发器”,允许解耦的应用在框架的其它地方发生操作时会被通知到。 简单来说,信号允许特定的sender通知一组receiver某些操作已经发生。 这在多处代码和同一事件有关联的情况下很有用。内置信号pre_init # Django中的model对象执行其构造方法前,自动触发 post_init...原创 2019-08-16 18:55:46 · 273 阅读 · 0 评论 -
魔术方法
一、什么是魔术方法?魔术方法是特殊方法的昵称。特殊方法也叫双下方法。类似这样:__getitem__二、使用特殊方法示例from math import hypot# 二维向量类# 自定义特殊方法class Vector(object): def __init__(self, x=0, y=0): self.x = x self.y...原创 2019-09-10 16:22:28 · 362 阅读 · 0 评论 -
类和对象plus
目录一、鸭子类型和多态二、抽象基类(abc模块)三、isinstance和type的区别四、类变量和实例变量五、类和实例属性的查找顺序:__mro__六、 静态方法、类方法以及对象方法七、数据封装和私有属性八、python的自省机制九、super十、with语句:上下文管理器1、2、简化上下文管理器一、鸭子类型和多态看到一只鸟走起来像鸭子,游...原创 2019-09-10 21:05:31 · 594 阅读 · 0 评论 -
深浅复制详解
浅复制:复制列表,默认做的就是浅复制。如果所有元素都是不可变的,那么使用浅复制没有问题,还能节省内存。问题如下:列表元素是可变的,复制时,默认做浅复制。list2中的列表和list1中的列表指向同一个列表,元组也是。当对list1或2中的列表进行删除或追加的时候,操作的是同一个引用对象。元组+=操作则会创建一个新元组。list1 = [3, [66,44, 55], (7,...原创 2019-09-12 11:20:16 · 442 阅读 · 0 评论 -
Python对象引用、可变性和垃圾回收
目录一、Python中的变量是什么二、==和is的区别三、del语句和垃圾回收四、函数的参数作为引用时2、不要使用可变类型作为参数的默认值一、Python中的变量是什么Python和java中的变量本质不一样。java中的变量是一个盒子,声明时已经说明了盒子的类型,大小。Python的变量实质是一个指针。也可以理解成一个便利贴。可以贴在任何类型上面。>&g...原创 2019-09-17 18:27:13 · 464 阅读 · 0 评论 -
可迭代的对象、迭代器和生成器
目录可迭代的对象、迭代器和生成器一、Sentence类第一版:单词序列①实现一个Sentence,以此开始探索可迭代对象。第一版要实现序列协议。②测试Sentence是否可以迭代③Sentence实例可以迭代的原因:二、可迭代的对象与迭代器的对比①可迭代的对象②标准的迭代器接口有两个方法。③迭代器三、Sentence类第二版:典型的迭代器①②把Se...原创 2019-09-24 16:41:09 · 669 阅读 · 0 评论 -
上下文管理器和with块
上下文管理器上下文管理器对象存在的目的是管理 with 语句, 就像迭代器的存在是为了管理 for 语句一样。with 语句的目的是简化 try/finally 模式。 这种模式用于保证一段代码运行完毕后执行某项操作, 即便那段代码由于异常、 return 语句或sys.exit() 调用而中止, 也会执行指定的操作。 finally 子句中的代码通常用于释放重要的资源, 或者还原临时变更的状...原创 2019-09-26 11:31:45 · 201 阅读 · 0 评论 -
使用celery
main.pyfrom tasks import send_mailif __name__ == '__main__': send_mail.delay()tasks.py# celery# pip install celery# 在windows操作系统上,还要安装另外一个东西:eventlet# pip install eventlet# task:任务...原创 2019-09-29 18:14:52 · 217 阅读 · 2 评论 -
collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、ChainMap、namedtuple和OrderedDict等。1.namedtuple: 生成可以使用名字来访问元素内容的tuple2.deque: 双端队列,可以快速的从另外一侧追加和推出对象3.Counter...原创 2019-09-04 19:29:28 · 202 阅读 · 0 评论 -
SQLAlchemy(二)
1、排序设置某个字段默认排序:__mapper_args__ = { "order_by": time #按时间排序 }也可以在查询的时候使用order_进行排序session.query(Article).order_by(Article.id.desc()).all() #desc是降序排序2、limit、offset和切片操作:...原创 2019-08-23 18:23:47 · 440 阅读 · 0 评论 -
SQLAlchemy(一)
1、flask-sqlalchemy安装pip install flask_sqlalchemy2、SQLAlchemy连接数据库from sqlalchemy import create_engineHOSTNAME = '127.0.0.1'PORT = '3306'DATABASE = 'flask_study'USERNAME = 'root'PASSWORD...原创 2019-08-22 19:46:19 · 655 阅读 · 1 评论 -
DRF使用文档功能
DRF自带的的文档生成功能,非常方便。配置:from rest_framework.documentation import include_docs_urlsurlpatten=[ …… url(r'docs/', include_docs_urls(title="yitao")), ……]在settings.py文件中,需加上REST_FRAM...原创 2019-08-17 10:57:27 · 724 阅读 · 0 评论 -
Flask上下文
Flask上下文flask上下文分为 应用上下文 和 请求上下文。1、关于wsgiWSGI(全称Web Server Gateway Interface),是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析HTTP请求、发送HTTP...原创 2019-08-26 21:16:36 · 388 阅读 · 0 评论 -
Flask常用的钩子函数
Flask钩子函数在正常执行的代码前中后,强行插入执行一段你想要实现的功能的代码,这种函数就叫做钩子函数。钩子函数就是等同于高速公路上的收费站,进高速之前给你一个卡,并检查你是否超重。离开之前收你,也可以拦住你安检一下。常用的钩子函数:1. before_first_request:Flask项目第一次部署后会执行的钩子函数。@app.before_first_request...原创 2019-08-26 21:31:13 · 717 阅读 · 0 评论 -
Flask信号
信号使用信号分为3步,第一是定义一个信号,第二是监听一个信号,第三是发送一个信号。1. 定义信号:定义信号需要使用到blinker这个包的Namespace类来创建一个命名空间。比如定义一个在访问了某个视图函数的时候的信号。 # Namespace的作用:为了防止多人开发的时候,信号名字冲突的问题 from blinker import Namespace ...原创 2019-08-27 09:53:01 · 360 阅读 · 0 评论 -
Flask-Restful
1、Restful规范https://blog.csdn.net/T_I_A_N_/article/details/994711632、Flask-Restful插件的使用1. 从flask_restful中导入Api,来创建一个api对象。api = Api(app)2. 写一个视图函数,让他继承自Resource,然后在这个里面,使用你想要的请求方式来定义相应的方法,比...原创 2019-08-27 10:30:57 · 347 阅读 · 0 评论