米兔-miny
小羊睡不着觉,也会数我吗
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
django项目部署-nginx-2
nginx+uwsgi排错常见问题排查排查问题宗旨 -> 看日志!看日志!!看日志!!!nginx日志位置:异常信息 /var/log/nginx/error.log正常访问信息 /var/log/nginx/access.loguwsgi日志位置:项目同名目录下,uwsgi.log常见问题排查(续)访问127.0.0.1:80地址,502响应502响应 代表nginx反向代理配置成功,但是对应的uWSGI未启动访问127.0.0.1:80/url原创 2021-11-22 10:37:07 · 699 阅读 · 0 评论 -
django项目部署-nginx-1
什么是NginxNginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理、负载均衡等一系列重要特性C语言编写,执行效率gaonginx作用负载均衡,多台服务器轮流处理请求反向代理原理:客户端请求nginx,再由nginx将请求转发 uWSGI 运行的django安装sudo apt install nginx如果下载速度很慢,考虑更换为国内源vim /etc/apt/sources.list更改国内源sudo apt-get update安装完毕原创 2021-11-22 10:36:22 · 321 阅读 · 0 评论 -
django项目部署-uwsgi
基础概念项目部署是指在软件开发完毕后,将开发机器上运行的软件实际安装到服务器上进行长期运行在安装机器上安装和配置同版本的环境[py,数据库等]django项目迁移sudo scp /home/tarena/django/[email protected]:/home/root/xxx请输入root密码:用uWSGI替代python manage.py runserver 方法启动服务器配置 nginx 反向代理服务器用nginx配置静态文件路径,解决静态路径问题原创 2021-11-19 15:49:14 · 1677 阅读 · 10 评论 -
用django发送邮件
业务场景业务警告邮件验证密码找回惯例,在说发送邮件的操作之前先来一点硬核知识:邮件相关协议 - SMTPSMTP的全称是“Simple Mail Trandfer Protocol”,即简单邮件传输协议(25号端口)它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转属于“推送”协议邮件相关协议 - IMAPIMAP全称是Internet Mail Access Protocol,即交互式邮件访问协议,是一个应用层协议(端口是143)用来从本地邮件客户端(Ou原创 2021-11-19 15:39:24 · 480 阅读 · 0 评论 -
django 实现文件上传
定义&场景定义:用户可以通过浏览器将 图片等文件传至网站场景:用户上传头像上传流程性的文档【pdf, txt等】上传规范 - 前端[HTML]文件上传必须为POST提交方式表单 ‘’ 中文件上传时必须有带有 enctype=“multipart/form-data” 时才会包含文件内容数据。表单中用标签上传文件# file : mysite7/views.pydef test_upload(request): if request.method == 'GE原创 2021-11-19 15:06:08 · 241 阅读 · 0 评论 -
django - 内建用户系统
定义Django带有一个用户认证系统。它处理用户账号、组、权限以及基于cookie的用户会话。用户可以直接使用Django自带的用户表。官方文档https://docs.djangoproject.com/en/2.2/topics/auth基本字段模型类位置 from django.contrib.auth.models import User字段说明username用户名password密码email邮箱first_name名l原创 2021-11-19 15:00:30 · 166 阅读 · 0 评论 -
django生成csv文件
csv文件定义逗号分隔值(Comma-Separated Values, CSV, 有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)说明:可被常见制表工具,如excel等直接进行读取python中生成csv文件Python提供了内建库 - csv;可直接通过该库操作csv文件案例如下:import csvwith open('eggs.csv','w',newline='') as csvfile: writer = csv.writer原创 2021-11-19 14:59:05 · 300 阅读 · 0 评论 -
django - 分页
分页分页是指在web页面有大量数据需要显示,为了阅读方便在每个页面中只显示部分数据。优点:方便阅读减少数据提取量,减轻服务器压力。Django提供了Paginator类可以方便的实现分页功能Paginator类位于 ‘django.core.paginator’ 模块中。Paginator对象负责分页数据整体的管理对象的构造方法paginator = Paginator(object_list, per_page)参数object_list:需要分页数据原创 2021-11-19 14:56:22 · 185 阅读 · 0 评论 -
django - 中间件-2
练习1用中间件实现强制某个IP地址只能向/test开头的地址 发送5次请求。超过5次提示访问次数已达上限。提示:request.META[‘REMOTE_ADDR’]可以得到远程客户端的IP地址request.path_info 可以得到客户端访问的请求路由信息# file : middleware/mymiddleware.pyclass VisitLimit(MiddlewareMixin): visit_times = {} # 访问次数 def p原创 2021-11-19 14:45:04 · 305 阅读 · 0 评论 -
django - 中间件-1
中间件的定义中间件是Django请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出。中间件以类的形式体现每个中间件组件负责做一些特定的功能。例如,Django包含一个中间件组件AuthenticationMiddleware,它使用会话将用户与请求关联起来。编写中间件中间件类须继承自 django.utils.deprecation.MiddlewareMixin 类中间件类须实现下列五个方法中的一个或多个:process_reque原创 2021-11-19 14:44:25 · 124 阅读 · 0 评论 -
django - 缓存-2
局部缓存策略缓存案例案例分析from django.shortcuts import renderdef index(request): # 时间复杂度极高的渲染 book_list = Book.objects.all() # -> 此处假设耗时2s return render(request, 'index.html', locals())缓存api的使用先引入cache对象方式1:使用caches['CACHE配置key']导入具体对象from原创 2021-11-19 14:43:59 · 101 阅读 · 0 评论 -
django - 缓存-1
缓存的定义定义:缓存是一类可以更快的读取数据的介质统称,也指其它可以加快数据读取的存储方式。一般用来存储临时数据,常用介质的是读取速度很快的内存。意义:视图渲染有一定成本,数据库的频繁查询过高;所以对于低频变动的页面可以考虑使用缓存技术,减少实际渲染次数;用户拿到响应的时间成本会更低。案例分析from django.shortcuts import renderdef index(request): # 时间复杂度极高的渲染 book_list = Book.ob原创 2021-11-19 14:43:29 · 257 阅读 · 0 评论 -
django - 云笔记项目-5-网站首页
网站首页url : /index视图函数:index_view模板位置:templates/index/index.html界面样式:登录前:登录后:python manage.py startapp index# file : tedu_note/settings.pyINSTALLED_APPS = [ 'index',]# file : index/views.pydef index_view(request): return render(r原创 2021-11-18 14:06:36 · 216 阅读 · 0 评论 -
django - 云笔记项目-4-用户登陆
用户登陆url : /user/login视图函数: login_view模板位置:templates/user/login.html界面样式:勾选 记住用户名 时,会话状态保存时间多一些# file : user/views.pydef login_view(request): if request.method == 'GET': # 获取登录页面 return render(request, 'user/login.html') e原创 2021-11-18 11:31:22 · 652 阅读 · 9 评论 -
django - 云笔记项目-3-注册问题优化
注册问题 - 优化密码如何处理?插入问题产品经理要求 注册 则免登录一条,这功能怎么做此处插入 哈希算法 的知识点:哈希算法给定明文,计算出一段定长,不可逆的值; md5,sha-256特点:定长输出:不管明文输入长度为多少,哈希值都是定长的, md5 - 32位16进制不可逆:无法反向计算出 对应的 明文雪崩效应:输入改变, 输出必然变场景:密码处理文件的完整性校验如何使用:在ipython中试验:import hashlibm = hashlib.md5(原创 2021-11-18 11:14:58 · 271 阅读 · 0 评论 -
django - 云笔记项目-2-用户注册
用户模型类设计class User(models.Model): username = models.CharField("用户名", max_length=30, unique=True) password = models.CharField("密码", max_length=32) create_time = models.DateTimeField('创建时间', auto_now_add=True) updated_time = models.DateTimeFi原创 2021-11-18 11:10:37 · 845 阅读 · 8 评论 -
django - 云笔记项目-1
项目介绍云笔记项目:用户可在该系统中 记录 自己的 日常学习/旅游 笔记,用户的数据将被安全的存储在 云笔记平台;用户与用户之间数据为隔离存储(用户只有在登录后才能使用相关笔记功能,且只能查阅自己的笔记内容)部分页面展示如下:云笔记项目 - 项目组成员角色产品/运营经理:负责产品功能细节的把控开发前端 - 负责显示部分内容的开发【多】后端 - 负责服务器部分的功能开发【少】运维 - 管理linux服务器,组件化配置,安全问题测试 - 负责找出产品功能的问题【BUG】美术 - 负原创 2021-11-18 10:57:54 · 393 阅读 · 1 评论 -
django - cookies和session-2
会话保持 - 登录流程Session定义Session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据。实现方式使用session需要在浏览器客户端启动cookie中存储sessionID每个客户端都可以在服务器端有一个独立的Session注意:不同的请求者之间不会共享这个数据,与请求者一一对应。session初始配置setting.py中配置session向INSTALLED_APPS列表中添加:(默认情况下是已有的)INSTALLED_APPS = [原创 2021-11-18 10:51:28 · 124 阅读 · 0 评论 -
django - cookies和session-1
会话从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话。HTTP协议是无状态的,导致会话状态难以保持试想一下,如果不保持会话状态,在电商网站购物的场景体验?Cookies和Session就是为了保持会话状态而诞生的两个存储技术Cookiescookie是保存在客户端浏览器上的存储空间Chrome浏览器 可能通过开发者工具的 Application >> Storage >> ‘Cookies’ 查看和操作浏览器端所有的Cookies值火狐浏览器原创 2021-11-18 10:40:40 · 110 阅读 · 0 评论 -
cookie和session
Cookie与Session流程与区别实现状态保持的原理登录一个网站时常常会涉及到用户登录的状态保持,来使得用户获得更好的体验。那么cookie和session就是为了实现状态保持的CookieCookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。Cookie就是服务器保存在客户端的数据,是一个键值对Cookie通过请求头和响应头在服务器与客户端之间传输,大小限制在4KB之内实现流程:用户在登录时向后端服务器发送post请求,服务器接受请求,检验请求参数无误后,处理原创 2021-11-18 10:30:54 · 125 阅读 · 0 评论 -
django - 关系映射-2- 一对多|多对多
一对多映射一对多是表示现实事物间存在的一对多的对应关系。如:一个学校有多个班级,一个班级有多个学生,一本图书只能属于一个出版社,一个出版社允许出版多本图书一对多需要明确出具体角色,在多表上设置外键语法当一个A类对象可以关联多个B类对象时class A(model.Model): ...class B(model.Model): 属性 = models.ForeignKey("一"的模型类, on_delete=xx)ForeignKey必须指定 on_delete 模式原创 2021-11-18 10:24:21 · 108 阅读 · 0 评论 -
django - 关系映射-1- 一对一映射
什么是关系映射在关系型数据库中,通常不会把所有数据都放在同一张表中,不易于扩展,常见关系映射有:一对一映射0. 如:一个身份证对应一个人一对多映射0. 如:一个班级可以有多个学生多对多映射0. 如:一个学生可以报多个课程,一个课程可以有多个学生学习一对一映射 【创建】一对一映射表示现实事物间存在的一对一的对应关系。如:一个家庭只有一个户主,一个男人有一个妻子,一个人有一个唯一的指纹信息等。语法:OneToOneField(类名, on_delete=xxx)class A原创 2021-11-18 10:05:33 · 583 阅读 · 7 评论 -
django - admin后台管理-2-自定义模型类
注册自定义模型类若要自己定义的模型类也能在 /admin 后台管理界中显示和管理,需要将自己的类注册到后台管理界面注册步骤:在应用app中的admin.py中导入注册要管理的模型models类,如:from .models import Book调用 admin.site.register 方法进行注册,如:admin.site.register(自定义模型类)# file : bookstore/admin.pyfrom django.contrib import adminfrom原创 2021-11-17 20:52:33 · 608 阅读 · 0 评论 -
django - admin后台管理-1
什么是admin管理后台django提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用django会搜集所有已注册的模型类,为这些模型类提供数据管理界面,供开发者使用图片中的 ‘用户’ 可以对应数据库中的 ’ auth-user ’admin配置步骤创建后台管理账号 - 该账号为管理后台最高权限账号python manage.py createsuperuserpython manage.py createsuperuserUsername(leave b原创 2021-11-17 19:17:06 · 272 阅读 · 0 评论 -
django - 聚合查询和原生数据库操作
聚合查询聚合查询是指对一个数据表中的一个字段的数据进行部分或全部进行统计查询,查bookstore_book数据表中的全部书的平均价格,查询所有书的总个数等,都要使用聚合查询聚合查询分为整表聚合分组聚合聚合查询 - 整表聚合不带分组的聚合查询是指导将全部数据进行集中统计查询聚合函数【需要导入】:导入方法:from django.db.models import *聚合函数:Sum, Avg, Count, Max, Min语法:MyModel.objects.aggre原创 2021-11-17 17:20:40 · 350 阅读 · 0 评论 -
django - F对象和Q对象
F对象一个F对象代表数据库中某条记录的字段的信息信息:通常是对数据库中的字段值在不获取的情况下进行操作用于类属性(字段)之间的比较语法:from django.db.models import FF('列名')示例1:更新Book示例中所有的零售价涨10元Book.objects.all().update(market_price=F('market_price')+10)'UPDATE 'bookstore_book' SET 'market_price' = ('boo原创 2021-11-17 17:01:26 · 154 阅读 · 0 评论 -
django - ORM-删除操作
单个数据删除步骤查找查询结果对应的一个数据对象调用这个数据对象的delete()方法实现删除try: auth = Author.objects.get(id=1) auth.delete()except: print(删除失败)批量删除步骤查找查询结果集中满足条件的全部QuerySet查询集合对象调用查询集合对象的delete()方法实现删除# 删除全部作者中,年龄大于65的全部信息auths = Author.objects.filter(age_原创 2021-11-17 16:48:15 · 430 阅读 · 0 评论 -
django - ORM-更新操作
更新单个数据修改单个实体的某些字段值的步骤:查0. 通过get()得到要修改的实体对象改0. 通过 对象.属性 的方式修改数据保存0. 通过 对象.save() 保存数据批量更新数据直接调用QuerySet的update(属性=值)实现批量修改实例# 将 id大于3的所有图书价格定为0元books = Book.objects.filter(id__gt=3)books.update(price=0)# 将所有书的零售价定为100元books = Book.obje原创 2021-11-17 16:35:17 · 479 阅读 · 0 评论 -
django - ORM-查询操作-2
条件查询 - 方法filter(条件)语法:MyModel.objects.filter(属性1=值1,属性2=值2)作用:返回包含此 条件 的 全部的数据集返回值:QuerySet容器对象,内部存放MyModel实例说明:当多个属性在一起时为"与"关系,即当filter样例# 查询书中出版社为"清华大学出版社"的图书from bookstore.models import Bookbooks = Book.objects.filter(pub="清华大学出原创 2021-11-17 16:24:34 · 162 阅读 · 0 评论 -
django - ORM-查询操作-1
查询简介数据库的查询需要使用管理器对象进行通过MyModel.objects管理器方法调用查询方法方法说明all()查询全部记录,返回QuerySet查询对象get()查询符合条件的单一记录filter()查询符合条件的多条记录exclude()查询符合条件之外的全部记录…查询方法all()方法用法:MyModel.objects.all()作用:查询MyModel实体中所有的数据等同于 select * from table原创 2021-11-17 15:40:41 · 465 阅读 · 0 评论 -
django - ORM-基本操作-创建数据
ORM - 创建数据ORM - 操作基本操作包括增删改查操作,即(CRUD操作)CRUD时指在做计算机处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)ORM CRUD 核心 --> 模型类.管理器对象管理器对象每个继承自 models.Model 的模型类,都会有一个 objects 对象被同样继承下来。这个对象叫管理器对象数据库的增删改查可以通过模型的管理器实现class MyModel(models.Model): ...My原创 2021-11-17 14:27:43 · 365 阅读 · 0 评论 -
django - ORM-基础字段与选项
ORM框架映射图创建模型类流程创建应用在应用下的models.py中编写模型类from django.db import modelsclass 模型类名(models.Model): 字段名 = models.字段类型(字段选项)迁移同步 makemigrations & migrate任何关于表结构的修改,务必在对应模型类上修改例:为bookstore_book表添加一个 名为info的字段varchar(100)解决方案 ->模型原创 2021-11-17 14:09:30 · 142 阅读 · 0 评论 -
django - 模型层及ORM介绍
模型层 - 定义回顾Django MTV模型层 - 负责跟数据库之间进行通信Django配置mysql安装 mysqlclient【版本 mysqlclient1.3.13以上,官网目前为1.4.x】安装前确认 ubuntu 是否已安装 python3-dev 和 default-libmysqlclient-devsudo apt list --installed|grep -E ‘libmysqlclient-dev|python3-dev’若命令无输出则需要安装 - s原创 2021-11-16 18:11:20 · 365 阅读 · 7 评论 -
Django应用及分布式路由
什么是应用应用在Django项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型创建应用步骤1用manage.py中的子命令startapp创建应用文件夹python manage.py startapp music其中music为我自定义的app名称步骤2在settings.py的INSTALLED_APPS列表中配置安装此应用settings.py配置样例INSTALLED_APPS = [ ... 'user', # 应用'user原创 2021-11-16 16:46:58 · 341 阅读 · 8 评论 -
django - 静态文件
什么是静态文件如:图片,css,js,音频,视频静态文件配置 - settings.py中1、配置静态文件的访问路径【该配置默认存在】通过哪个url地址找静态文件STATIC_URL = ‘/static/’说明:指定访问静态文件时是需要通过 /static/xxx 或 http://127.0.0.1:8000/static/xxx 【xxx表示具体的静态资源位置】2、配置静态文件的存储路径STATICFILES_DIRSSTATICFILES_DIRS保存的是静态文件在服原创 2021-11-16 15:46:38 · 612 阅读 · 4 评论 -
django - url反向解析
在讲url反向解析之前,先简单介绍一下url。代码中url出现位置模板【html中】<a href=“url”>超链接</a> 。点击后,页面跳转至url<form action=‘url’ method=‘post’> 。form表单中的数据,用post方法提交至url视图函数中 - 302跳转 HTTPResponseRedirect(‘url’)将用户地址栏中的地址跳转到url代码中url书写规范绝对地址http://127原创 2021-11-16 15:26:52 · 282 阅读 · 7 评论 -
django - 模板层-过滤器和继承
模板层 - 过滤器定义:在变量输出时对变量的值进行处理作用:可以通过使用过滤器来改变变量的输出显示语法:{{ 变量 | 过滤器1:‘参数值1’ | 过滤器2:‘参数值2’ …}}官方文档:https://docs.djangoproject.com/en/2.2/ref/templates/butltins/常用过滤器过滤器说明lower将字符串转换为全部小写upper将字符串转换为大写形式safe默认不对变量内的字符串进行html转义add:原创 2021-11-16 14:33:58 · 401 阅读 · 4 评论 -
django - 模板层-变量和标签
变量视图函数中可以将Python变量封装到字典中传递到模板样例:def xxx_view(request): dic = { "变量1":"值1", "变量2":"值2", } return render(request, 'xxx.html', dic)能传递到模板中的数据类型str - 字符串int - 整型list - 数组tuple - 元组dict - 字典func - 方法obj - 类实例化的对象在模板中使用原创 2021-11-16 14:17:00 · 397 阅读 · 4 评论 -
djnago - 模板层 (Template)
模板层什么是模板模板是可以根据字典数据动态变化的html网页模板可以根据视图中传递的字典数据动态生成相应的HTML网页。模板配置创建模板文件夹<项目名>/templates在settings.py中TEMPLATES配置项BACKEND:指定模板的引擎DIRS:模板的搜索目录(可以是一个或多个)。告诉Django我们的html都存哪了,加载页面会去这里找。APP_DIRS:是否要在应用中的templates文件夹中搜索模板文件OPTIONS:有关模板的选项配置原创 2021-11-16 11:37:11 · 109 阅读 · 0 评论 -
Django设计模式
传统的MVCMVC代表Model-View-Controller(模型-视图-控制器)模式M模型层(Model),主要用于对数据库层的封装V视图层(View),用于向用户展示结果(WHAT+HOW)C控制(Controller),用于处理请求、获取数据、返回结果(重要)作用:降低模块间的耦合度(解耦)Django的MTV模式MTV代表Model-Template-View(模型-模板-视图)模式M模型层(Model)负责与数据库交互T模板层(Template)负责呈现内容到原创 2021-11-15 20:08:05 · 890 阅读 · 0 评论