python
文章平均质量分 93
Dev-L
这个作者很懒,什么都没留下…
展开
-
Json Web Token 详解
什么是JWTJSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。让我们来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以是这样的 https://your.awesome-app.com/make-friend/?from_user=B&a...原创 2019-04-06 10:32:45 · 5552 阅读 · 4 评论 -
Python项目自动生成requirements.txt
项目开发的时候,总是要搭建和部署环境,这时,就需要一个python第三方包的list,一般叫做requirements.txt。如果项目使用virtualenv环境,直接使用pip freeze即可,但是如果项目的依赖没有维护,就会很麻烦,这时我们就需要一个叫pipreqs的工具,可以帮助我们自动生成requirements.txt文件。使用pip freeze $ pip...原创 2018-08-30 10:47:30 · 4415 阅读 · 0 评论 -
Django uwsgi Nginx 部署
部署前的测试cd bbs # 进入项目 bbs 目录python manage.py runserver 0.0.0.0:8000运行开发服务器测试,确保开发服务器下能正常打开网站。安装 nginx 和 需要的包安装 nginx 等软件ubuntu / Linux Mint 等,下面简写为 (ubuntu):sudo apt-get install python-...原创 2018-09-01 09:25:02 · 316 阅读 · 0 评论 -
python3virtualenv和virtualenvwrapper详解
1、安装virtualenv 安装方法pip install virtualenv #安装到python2中pip3 install virtualenv #安装到python3中2、安装virtualenvwrapper 安装方法pip install virtualenvwrapper #安装到python2中pip3 install virtualenv...原创 2018-08-31 09:31:13 · 1709 阅读 · 0 评论 -
argparse模块
argparse 使用简单示例我们先来看一个简单示例。主要有三个步骤:创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() 解析添加的参数示例: 1 2 3 4 5 6 7 8 9 # -*- coding: u...原创 2018-08-13 09:14:06 · 734 阅读 · 1 评论 -
Django学习笔记7——Django Form表单
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。   Django form组件就实现了上面所述的功能。主要功能如下...原创 2018-08-03 13:56:27 · 422 阅读 · 0 评论 -
Python自定义线程池实现方法分析
主要思路: 任务获取和执行: 1、任务加入队列,等待线程来获取并执行。 2、按需生成线程,每个线程循环取任务。 线程销毁: 1、获取任务是终止符时,线程停止。 2、线程池close()时,向任务队列加入和已生成线程等量的终止符。 3、线程池terminate()时,设置线程下次任务取到为终止符。 import threadingimport contextlibfro...原创 2018-08-12 16:45:56 · 416 阅读 · 0 评论 -
Django学习笔记6——Cookie和Session
Cookie原创 2018-08-02 08:22:12 · 386 阅读 · 0 评论 -
Django学习笔记5——Django ORM系列操作
常用一般操作先放官网文档 。必知必会<1> all(): 查询所有结果<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象&原创 2018-08-01 17:08:34 · 2059 阅读 · 0 评论 -
Django学习笔记4——Django ORM系统
Object Relational Mapping(ORM)ORM介绍ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。   简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。   O...原创 2018-08-01 12:02:42 · 981 阅读 · 0 评论 -
Django 之 admin管理工具
admin组件的使用Django 提供了基于 web 的管理工具。Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'djan...原创 2018-09-08 13:59:40 · 438 阅读 · 0 评论 -
Django的model form组件
model form是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样一张学生表,字段有姓名,年龄,爱好,邮箱,电话,住址,注册时间等等一大堆信息,现在让你写一个创建学生的页面,你的后台应该怎么写呢?首先我们会在前端一个一个罗列出这些字段,让用户去填写,然后我们从后端一个一个接收用户的...原创 2018-09-06 14:15:36 · 228 阅读 · 0 评论 -
Django的缓存机制
缓存简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面.   当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力.   缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些...原创 2018-09-06 14:48:38 · 236 阅读 · 0 评论 -
Python 最佳实践指南 2018
第一章. 基础信息 1.1. 翻译说明 1.2. 我应该选择哪一个 Python 解释器(3 vs. 2)?已完成 1.3. 所有参与译者 第二章. 安装 Python 2.1. Python 的正确安装方式已完成 2.2. 安装 Python 3 - Mac OS X已完成 2.3. 安装 Python 3 - Windows已完成 2.4...转载 2019-04-06 09:08:13 · 514 阅读 · 0 评论 -
Flask学习笔记之——蓝图、基于DBUtils实现数据库连接池、上下文管理等
面向对象知识回顾子类继承父类的三种方式class Dog(Animal): #子类 派生类 def __init__(self,name,breed, life_value,aggr): # Animal.__init__(self,name,breed, life_value,aggr)#让子类执行父类的方法 就是父类名.方法名(参数),连self都得传 ...原创 2018-10-24 09:42:05 · 540 阅读 · 0 评论 -
Flask学习笔记之——Flask基本内容
Flask运行flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi实例化Flask对象,里面是有参数的app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx')两种添加路由的方式方式一: @app.route('/xxxx') # @decor...原创 2018-10-20 09:49:25 · 550 阅读 · 0 评论 -
Flask学习笔记之——初始
Flask简介Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进...原创 2018-10-20 08:46:35 · 285 阅读 · 0 评论 -
Python-Redis模块介绍
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。...原创 2018-09-26 09:32:36 · 4027 阅读 · 0 评论 -
rest-framework框架学习之基本组件
先放document: http://www.django-rest-framework.org/tutorial/quickstart/序列化创建一个序列化类简单使用开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式。我们可以通过声明与Django forms非常相似的序列化器(seriali...原创 2018-09-14 14:47:13 · 353 阅读 · 0 评论 -
Django的CBV
CBV(class base views) 就是在视图里使用类处理请求。Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种:提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)可以用不同的函数针对不同的...原创 2018-09-13 21:27:17 · 311 阅读 · 0 评论 -
Django-model进阶
QuerySet可切片使用Python 的切片语法来限制查询集记录的数目 。它等同于SQL 的LIMIT 和OFFSET 子句。>>> Entry.objects.all()[:5] # (LIMIT 5)>>> Entry.objects.all()[5:10] # (OFFSET 5 LIMIT 5)不支持负的索引(例如...原创 2018-09-13 21:13:13 · 269 阅读 · 0 评论 -
rest-framework框架学习之RESTful简介
什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 REST与技术无关,代表的是一种软件架构风格...原创 2018-09-13 20:38:00 · 1448 阅读 · 0 评论 -
Django组件之——分页器
Django自带分页器(paginator), 用起来非常方便。怕自己写的出bug,可以使用现成的~view.pyfrom django.shortcuts import render,HttpResponse# Create your views here.from app01.models import *from django.core.paginator import Pa...原创 2018-09-06 20:26:31 · 302 阅读 · 0 评论 -
Django ORM 之 关联管理器(RelatedManager)
class RelatedManager“关联管理器”是在一对多或者多对多的关联上下文中使用的管理器。它存在于下面两种情况:ForeignKey关系的“另一边”。像这样:from django.db import modelsclass Reporter(models.Model): # ... passclass Article(models.Mode...原创 2018-09-06 20:11:46 · 2005 阅读 · 0 评论 -
Django的信号
Django提供一种信号机制。其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) 。当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行。   通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。用于在框架执行操作时解耦。Django内置信号Model signals pre_init ...原创 2018-09-06 15:08:15 · 533 阅读 · 0 评论 -
Django学习笔记3——Django模板系统
Django模板系统我是官方文档常用语法 我们只需要记两种特殊符号:{{ }}和 {% %}   其中,变量相关的用{{}},逻辑相关的用{%%}。变量 {{变量名}},变量名由字母数字和下划线组成; 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值;示例:# views.pydef template_te...原创 2018-07-31 17:49:35 · 433 阅读 · 0 评论 -
Django学习笔记2——Django的View(视图)
Django的View 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。   无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方...原创 2018-07-31 17:00:31 · 4482 阅读 · 1 评论 -
Django学习笔记10——Django Auth认证系统
Django自带的用户认证 我们在开发一个网站的时候,无可避免的要设计、实现网站的用户系统。此时我们需要实现包括但不限于用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。   Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。au...原创 2018-08-05 10:52:06 · 357 阅读 · 0 评论 -
Python正则表达式实现简单四则运算解析器
实现目标: 1. 正确处理加减乘除及括号优先级 2. 保证结果无误,可用eval() 测试 3.练习正则表达式使用#coding utf-8""" 用正则表达式实现四则运算表达式解析器思路:根据计算优先级,先计算内部括号里面的运算,并用计算结果的字符串形式替换原表达式,直到没有括号运算符;然后匹配乘法和除法的运算因子,按从左往右的顺序依次更...原创 2018-04-04 11:09:01 · 4040 阅读 · 0 评论 -
Python 常用PEP8规范及Python小把戏
前言从很多地方搬运+总结,以后根据这个标准再将python的一些奇技淫巧结合起来,写出更pythonic的代码~PEP8 编码规范英文原版请点击这里以下是@bobo的整理,原文请见PEP8 Python 编码规范整理代码编排缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。类...转载 2018-04-03 16:29:02 · 1082 阅读 · 0 评论 -
软件目录规范
为什么要设计好目录结构设计项目目录结构”,就和”代码编码风格”一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:一类同学认为,这种个人风格问题”无关紧要”。理由是能让程序work就好,风格问题根本不是问题。 另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性。 “项目目录结构”其实也是属于”可读性和可维护性”的范畴,我们设计一个层次清晰的目录结构,就是为...原创 2018-04-10 17:48:01 · 256 阅读 · 0 评论 -
Python正则表达式总结
1.1 通配符 正则表达式能够匹配对于一个的字符串,可以使用特殊字符创建这类模式。(图片来自cnblogs)1.2 特殊字符的转义 由于在正则表达式中,有时需要将特殊字符作为普通字符处理,就需要用‘\’进行转义,例如‘python\\.org’就会匹配‘python.org’,那么为什么要用两个反斜杠呢,原因在于需要进行两层转义,首先是re模块表示正则表达式中需要转义一次,其次是pyt...原创 2018-04-03 10:24:36 · 913 阅读 · 0 评论 -
Python从入门到精通之装饰器
闭包def outer(): x = 10 def inner(): # 内部函数 print(x) # 引用外部变量 return inner # inner是闭包f = outer()f() # f在outer()外执行,却能取到其内部变量x如果在一个内部函数中,对外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(c...原创 2018-04-10 15:16:43 · 317 阅读 · 0 评论 -
Python迭代器&生成器
可迭代对象如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。很多容器都是可迭代对象,此外还有更多的对象同样也是可迭代对象,比如处于打开状态的files,sockets等等。但凡是可以返回一个 迭代器 的对象都可称之为可迭代对象,听起来可能有点困惑,没关系,可迭代对象与迭代器有一个非常重要的区别。先看一个例子:...原创 2018-04-10 11:25:45 · 270 阅读 · 0 评论 -
Python 直接赋值、浅拷贝和深度拷贝解析
直接赋值:其实就是对象的引用(别名)。浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。浅拷贝实例:a = [[1,2],3,4]b = a.copy() # 浅拷贝print(b) # [[1, 2], 3, 4]a[0][1] = 3print(b) # [...原创 2018-04-09 16:03:35 · 236 阅读 · 0 评论 -
Python从入门到精通2
字符编码python2 py2里默认编码是ascii 文件开头那个编码声明是告诉解释这个代码的程序 以什么编码格式 把这段代码读入到内存,因为到了内存里,这段代码其实是以bytes二进制格式存的,不过即使是2进制流,也可以按不同的编码格式转成2进制流,你懂么? 如果在文件头声明了#_*_coding:utf-8*_,就可以写中文了, 不声明的话,python在处理这段代码时按ascii,...原创 2018-04-09 14:55:21 · 617 阅读 · 0 评论 -
Python从入门到精通1
三元运算符result = 值1 if 条件 else 值2如果条件为真:result = 值1 如果条件为假:result = 值2pyc文件是什么我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObj...原创 2018-04-09 11:35:00 · 356 阅读 · 0 评论 -
TCP三次握手和四次挥手
三次握手:A向B发起建立连接请求:A——>B; B收到A的发送信号,并且向A发送确认信息:B——>A; A收到B的确认信号,并向B发送确认信号:A——>B。 三次握手大概就是这么个过程。 通过第一次握手,B知道A能够发送数据。通过第二次握手,A知道B能发送数据。结合第一次握手和第二次握手,A知道B能接收数据。结合第三次握手,B知道A能够接收数据。至此,完成了握手过程,A知道B能收能发,B知道原创 2017-11-28 10:52:44 · 287 阅读 · 0 评论 -
URL最后斜杠/的作用
1.http://www.abc.com/abc2.http://www.abc.com/abc/ 这两个网址到底有没区别呢?哪种对于SEO更好?这个问题困扰了我很久,因为我这个人很追求完美,这两个url虽然只有细微的差别,但是我还是想把最好的一种用于我的网站。 对于用户来说,在大多数情况下这两个网址没有任何区别,他们访问的都是网站abc目录下的默认首页。一般用户也都知道最后一个斜杠是可有可无原创 2017-11-21 13:01:54 · 10483 阅读 · 0 评论 -
Python入门网络爬虫之精华版
Python学习网络爬虫主要分3个大的版块:抓取,分析,存储另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下。首先列举一下本人总结的相关文章,这些覆盖了入门网络爬虫需要的基本概念和技巧:宁哥的小站-网络爬虫当我们在浏览器中输入一个url后回车,后台会发生什么?比如说你输入http://www.lining0806.com/,你就会看到宁哥的小站首页。转载 2017-11-10 09:13:13 · 435 阅读 · 0 评论