Python基础
张遥
这个作者很懒,什么都没留下…
展开
-
使用Flask写接口并部署到服务器上运行
项目三大架构逻辑架构(业务架构)–》思维导图(整理用户故事)技术架构(前端 后端 数据库 缓存 消息队列 搜索引擎…)开发语言:python框架:Django、物理架构(如何部署项目–》有没有云服务器?多少台?)Nginx/Apache/Tengine -->静态资源服务器Gunicorn/uWSGI运行python程序的服务器(提供动态内容)Django3支持异步编程 --》DAphne/本地运行from flask import Flask, jsonifyapp =原创 2020-10-21 13:08:15 · 10192 阅读 · 4 评论 -
使用JWT验证用户身份
安装 json web tokenpip install pyjwt导入 json web tokenimport jwt用户登录成功后,将需要的用户数据放入payload中,通过jwt的encode函数生成身份令牌,然后签发身份令牌。import jwt@api_view(('POST', ))def login(request): hint = request.GET.get('hint') or '' if request.method == 'POST':原创 2020-10-13 20:20:55 · 766 阅读 · 0 评论 -
将文件上传到七牛云
下载七牛云SDKpip install qiniu配置上传密钥,上传空间定义上传文件/二进制文件的函数import qiniuAUTH = qiniu.Auth( '2tnO1EafA4nxxccvdMaTERpSrSXpFmvccPCuBE4r', '-KreVA7Wi0Gsd6RfCgWEu76rgzcikr_q96y_-UAY')BUCKET_NAME = 'yaoyao123'# 普通文件上传函数(大文件)def upload_file_to_qiniu(原创 2020-10-13 19:25:38 · 389 阅读 · 0 评论 -
使用celery执行异步定时任务
苹果:ctrl+c 停止pycharm terminalWindows:点叉叉ctrl+d 结束输入atq 查看atrm 删除crontab -e分时日月星期task 函数名schedule:时间 克隆表定时任务函数from datetime import timedeltafrom django.utils import timezonefrom polls.models import Userfrom vote import app@app.taskdef chec原创 2020-10-12 20:11:06 · 139 阅读 · 0 评论 -
绕过Django ORM机制写原生sql语句
调用raw方法写原生sql语句def show_index(request): queryset = Subject.objects.raw('select no, name, intro from tb_subject where is_hot=1') return redirect('/static/html/subjects.html')使用get_connectio方法绕过Django的ORM机制(纯原生)from django.db.transaction import g原创 2020-10-12 11:25:46 · 431 阅读 · 1 评论 -
使用celery异步处理消息
安装celerypip install celery在vote的__init__.py文件中(写在这里可以自动执行)import celeryimport os# 注册环境变量os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'vote.settings')app = celery.Celery( # 指定模块名字(包的名字) main='vote', # 消息队列 broker='redis://:redi原创 2020-10-10 17:46:06 · 212 阅读 · 1 评论 -
Python中set和dict底层实现原理——重写相等性判断
创建一个类,然后创建三个对象。class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f'{self.name}: {self.age}'p1 = Person('勤勤', 20)p2 = Person('勤勤', 20)p3 = Person('勤勤', 18)persons原创 2020-09-28 20:02:13 · 586 阅读 · 1 评论 -
装饰器的应用与取消
装饰器是一个函数,它可以装饰其他的函数或类并为其提供额外的功能GoF设计模式(在特定场景下可以复用的设计经验,一共23种经典的场景)装饰器实现了设计模式的代理模式,用代理对象执行被代理的行为并添加额外的功能代理模式通常解决的都是程序横切关注功能问题(跟正常业务逻辑没有必然联系的功能)import randomfrom functools import wrapsdef change_return_value(func): # 可以随时取消掉装饰器 @wraps(func)原创 2020-09-23 12:51:36 · 286 阅读 · 0 评论 -
Django 中的 ORM 机制
什么是ORMObject Relation Mapping 即对象关系映射。实现对象模型到关系模型的双向转换。pythonmysql对象模型关系模型模型类数据库的二维表模型类的对象表中的一条记录使用ORM通过表自动生成模型 python manage.py inspectdb > polls/models.py记得在APPS里添加项目名字进入Django的编译器 python manage.py shell然后即可在Django的编译器原创 2020-09-22 19:50:40 · 245 阅读 · 0 评论 -
PyCharm中一条命令的事儿
一条命令设置全局豆瓣镜像 pip config set global.index-url https://pypi.doubanio.com/simple一条命令生成依赖项文件pip freeze > requirements.txt一条命令安装所有依赖项 pip install -r requirements.txt原创 2020-09-22 18:58:14 · 134 阅读 · 0 评论 -
python递归函数使用@lru_cache()装饰器缓存中间计算结果
很多复杂的问题在没有发现明显的计算规律的时候,也许使用递归能帮我们得到答案。使用递归的条件:递归公式:第n次与第n-1次的关系收敛条件:何时停止递归调用,无限递归会触发递归错误(溢出)举一个简单的例子:计算n的阶乘 n!=n*(n-1)!def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)for i in range(1,101): print(f'{原创 2020-09-19 10:27:55 · 536 阅读 · 0 评论 -
python socket实现简单的聊天功能
套接字分为服务器套接字和客户端套接字1. 服务器端先导入socket模块from socket import socket将创建过程封装到一个函数中def server_func(): # 1.创建套接字对象 server = socket() # 2.绑定IP,端口号 server.bind(('101.17.190.116',5488)) # 3.监听请求 server.listen(200) # 4.等待客户端连接 while True: connect,add原创 2020-08-27 19:55:55 · 993 阅读 · 0 评论 -
使用http://rap2.taobao.org/写测试接口文档
下面以设计评论接口为例,简单说明接口文档应该如何撰写。首先,我们可以定义全局返回状态码。返回码返回信息说明10000获取评论成功10001创建评论成功10002⽆无法创建评论创建评论时因违反审核机制⽽而⽆无法创建10003评论已被删除查看评论时评论因不不和谐因素已被删除获取文章评论。GET /articles/{article-id}/comments/开发者:王勤勤最后更新时间:2018年年8月10⽇标签:v 1.0接⼝说明:原创 2020-08-20 21:09:11 · 2585 阅读 · 0 评论 -
django框架创建一个需要检查用户是否登陆的中间键
在项目下面新建一个python文件用来写中间键。将官方文档的模版直接拷贝下来。文档地址def simple_middleware(get_response): # One-time configuration and initialization. def middleware(request): # Code to be executed for each request before # the view (and later middlewa.原创 2020-08-13 20:29:09 · 166 阅读 · 0 评论 -
Mac使用Django安装不上mysqlclient的解决办法
如图,在pycharm中安装mysqlclient报错,而Django框架想要的又就是mysqlclient,怎么办?可以暂时安装PyMYSQL代替mysqlclientpip install PyMYSQL安装好PyMYSQL后以后,Django并不想要PyMYSQL,所以需要修改一些配置:在配置文件中导入pymysql ,然后将它改名为mysqlclient如果PyMYSQL的版本太低了,还需要修改版本号按住command键点击包名称进入源代码修改版本号最后需要将..原创 2020-08-10 12:59:42 · 612 阅读 · 0 评论 -
Django开发中关联查询优化(django-debug-toolbar)
当我们需要关联查询的时候,发现页面加载数据非常慢,又不知道什么原因,我们可以安装一个叫django-debug-toolbar的插件来帮助我们分析。一、安装django-debug-toolbar在pycharm终端输入,下载安装django-debug-toolbarpip install django-debug-toolbar在原来项目的配置文件中,需要修改几个地方在setting.py文件中的INSTALLED_APPS中加上红框中的语句(位置随意)接着在setting.py文件原创 2020-08-08 16:02:57 · 283 阅读 · 0 评论 -
Django登陆页面报403禁止访问错误的原因及解决办法
如图所示,即使输入正确的用户名和密码依旧会报403错误这是因为Django默认加了csrf令牌验证机制,这就需要我们在要提交的表单中添加如下一行代码如果确实不想加上{% csrf_token %}这行代码,那么就在视图函数上加上@csrf_exempt 的魔法方法...原创 2020-08-06 12:53:27 · 1984 阅读 · 0 评论 -
Django部署数据库
在配置文件中加入自己的项目名字2.使用navicat创建数据库,创建一个低权限用户配置setting中的数据库配置配置时区原创 2020-08-04 13:21:53 · 428 阅读 · 0 评论 -
再识Django(从修改默认配置到生成动态网页)----接上篇
现在我们的Django已经跑起来了,接下来我们可以在helloDjango项目下创建一个或者多个应用,命令如下:python manage.py startapp demo 或django-admin startapp demo可以在左上角看见我们的demo应用已经建好了。我们可以在demo文件夹下面的view.py文件中写服务器响应出来的代码:在urls.py文件中添加路径现在默认页面已经修改成刚刚写的样子了:当我们成功运行我们的Django项目的时候,会发现页面显示的是英文.原创 2020-08-04 09:14:57 · 289 阅读 · 0 评论 -
初识Django(从安装到启动)
在git bash 或者cmd 中输入如下命令,下载安装Django2.2.14版本。创建项目的名称,假设名字叫hellodjango然后会在所在目录下出现一个叫hellodjango的文件夹,我的文件就在c盘用户/administrator下,然后将hellodjango文件夹拖拽到pycharm中打开,打开如下:然后给这个项目配置虚拟环境给虚拟环境添加依赖项,在terminal中输入:pip install django==2.2.14运行Django项目,可以选..原创 2020-08-03 18:51:09 · 206 阅读 · 0 评论 -
如何将pycharm文件同步到码云
登陆码云创建一个新仓库创建好以后,选择连接方式(https 或者SSH),复制后面的地址。打开pycharm,check out from version control 选择gitURL填写第二步所复制的地址。路径下不要使用中文。创建虚拟环境。创建一个名为.gitignore 的文件,版本控制文件。在Terminal中使用pip 命令安装msqlclient (安装不上使用pymysql)使用pycharm操作数据库。import MySQ..原创 2020-07-30 17:28:06 · 743 阅读 · 2 评论 -
Python 中列表删除元素删不干净的问题
现在已知一个分数列表:[89,45,55,30,78,90,34,87,10,59,100],要求删除列表中低于60的值scores = [89,45,55,30,78,90,34,87,10,59,100]scores.sort()for cj in scores: if cj<60: scores.remove(cj)print(scores) #[30, 45, 59, 78, 87, 89, 90, 100]很明显,上面这种直接删除的方法并没有答.原创 2020-07-08 20:40:22 · 1369 阅读 · 0 评论 -
python 中的 getter 和 setter
一、抛出问题假如我们需要写一个矩形的类,对象属性包括矩形的长、宽和面积。我们需要写一个方法计算矩形的面积。那么问题是:我们如何实现计算矩形的面积?先看如下代码:#定义类class Rect: #定义属性 def __init__(self, length=0, width=0): self.length = length self.width = width self.area = length*width #定义方法 de原创 2020-07-05 17:39:12 · 1794 阅读 · 0 评论 -
Python列表知识入门详解
一、什么是列表列表是容器型数据,用[]表示列表元素可以是任何数据类型,元素之间用逗号隔开列表是有序的、可变的。list1 = [1,2,3,4,'a','张三']二、列表的增删改查一、查1、查询单个元素使用下标查询,下标有正负两种之分,下标不可越界。正下标从0开始到n-1;负下标从最后一个开始,是负几就是倒数第几个。print(list[1]) #2print(list[-2]) #a2、查询多个元素(切片)列表[开始下标:结束下标:步长]步长可以原创 2020-06-29 20:35:25 · 444 阅读 · 0 评论