202106-05 Django一小时写出账号密码管理系统 1、环境搭建需安装:python3.6Pycharm专业版django2.2.6mysqlclientpipinstalldjango==2.2.6pipinstallmysqlclient2、生成django项目django-adminstartprojectyourproject3、修改数据库引擎为mysql并要数据库中创建对应名字的数据库DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'myblog',#数据库名'USER':'root',#用户名'PASSWORD':'**... 继续阅读 >
202106-05 Django程序的优化技巧 友情提示:过度性能优化是没有必要甚至有害的,因为花大力气带来的毫秒级的响应提升你的用户可能根本感知不到,毕竟开发人员的时间也很宝贵。性能优化指标在对一个Web项目进行性能优化时,我们通常需要评价多个指标:响应时间最大并发连接数代码的行数函数调用次数内存占用情况CPU占比其中响应时间(服务器从接收用户请求,处理该请求并返回结果所需的总的时间)通常是最重要的指标,因为过长的响应时间会... 继续阅读 >
202106-05 Django cookie和session的应用场景及如何使用 为什么需要使用cookie和ses sion?HTTP协议本身是”无状态”的,在一次请求和下一次请求之间没有任何状态保持,服务器无法识别来自同一用户的连续请求。有了cookie和session,服务器就可以利用它们记录客户端的访问状态了,这样用户就不用在每次访问不同页面都需要登录了。什么是cookie,cookie的应用场景及缺点cookie是一种数据存储技术,它是将一段文本保存在客户端(浏览器或本地电脑)的一种技术,并且可以长时间的保存。当... 继续阅读 >
202106-04 Django项目如何正确配置日志(logging) 当Django项目正式部署上线后,我们需要设置DEBUG=False。这时开发者应怎样检查Django程序在生产环境运行时有什么异常或错误呢?答案就是日志(logging)。在生产环境中,Django默认是不会在服务器上自动生成log文件的,即使程序出现error级别的故障也不会通知管理员。本文将教你如何在Django项目中正确配置日志(logging),让Django生成log日志文件,并在程序运行发生error级别故障时通知管理员。日志基础知识日志与我们的软件程序... 继续阅读 >
202106-04 django上传文件的三种方式 Django文件上传需要考虑的重要事项文件或图片一般通过表单进行。用户在前端点击文件上传,然后以POST方式将数据和文件提交到服务器。服务器在接收到POST请求后需要将其存储在服务器上的某个地方。Django默认的存储地址是相对于根目录的/media/文件夹,存储的默认文件名就是文件本来的名字。上传的文件如果不大于2.5MB,会先存入服务器内存中,然后再写入磁盘。如果上传的文件很大,Django会把文件先存入临时文件,再写入磁盘。Djan... 继续阅读 >
202106-04 详解Django的MVT设计模式 经典的MVC设计模式及其优点MVC即Model-View-Controller(模型-视图-控制器),是经典的软件开发设计模式。**Model(模型)**:简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等)。Web开发框架会根据模型的定义来自动生成数据表。View(视图):主要用于显示数据,用来展示... 继续阅读 >
202106-04 Django如何与Ajax交互 前后端传输数据的编码格式前后端传输数据的编码格式主要有三种,本文接下来将详细演示。urlencodedformdatajsonAjax提交urlencoded格式数据Ajax给后台发送数据的默认编码格式是urlencoded,比如username=abcde&password=123456的形式。Django后端拿到符合urlencoded编码格式的数据都会自动帮你解析分装到request.POST中,与form表单提交的数据相同。下面两种方式是等同的。//手动构造数据data$("#btnSubmit").click(function(){... 继续阅读 >
202106-04 详解Django+Vue+Docker搭建接口测试平台实战 一.开头说两句大家好,我叫林宗霖,是一位测试工程师,也是全栈测开训练营中的一名学员。在跟着训练营学习完Docker容器技术系列的课程后,理所应当需要通过实操来进行熟悉巩固。正好接口自动化测试平台需要迁移到新的测试服务器上,就想要体验一番Docker的“一次构建,处处运行”。这篇文章简单介绍了下这次部署的过程,其中使用了Dockerfile定制镜像和Docker-Compose多容器编排。二.项目介绍项目采用的是前后端分离技术来实现的... 继续阅读 >
202105-29 django如何自定义manage.py管理命令 每次在启动Django服务之前,我们都会在终端运行pythonmanage.pyxxx的管理命令。其实我们还可以自定义管理命令,这对于执行独立的脚本或任务非常有用,比如清除缓存、导出用户邮件清单或发送邮件等等。自定义的管理命令不仅可以通过manage.py运行,还可以通过Linux或Celery的crontab服务将其设成定时任务。本文主要讲解如何自定义Django-admin命令,并提供一些演示案例。自定义Django-admin命令一共分三步:创建文件夹布局、编写... 继续阅读 >
202105-25 Django利用Cookie实现反爬虫的例子 我们知道,Diango接收的HTTP请求信息里带有Cookie信息。Cookie的作用是为了识别当前用户的身份,通过以下例子来说明Cookie的作用。例:浏览器向服务器(Diango)发送请求,服务器做出响应之后,二者便会断开连接(会话结束),下次用户再来请求服务器,服务器没有办法识别此用户是谁,比如用户登录功能,如果没有Cookie机制支持,那么只能通过查询数据库实现,并且每次刷新页面都要重新操作一次用户登录才可以识别用户,这... 继续阅读 >
202105-25 Python Django 后台管理之后台模型属性详解 十八、Django后台模型属性篇继续在之前的项目中进行代码的编码,首先要回忆一下通过createsuperuser命令创建的管理员账号,如果忘记了,需要重新创建一个。本篇博客涉及的代码都在admin.py文件中,如果你首次打开本篇文章,请翻看本文结尾出的目录大纲,可以再次学习。为了便于学习,提前在models.py中新增一个类,代码如下:fromdjango.dbimportmodelsclassMyCenter(models.Model):pass18.1在admin中注册模型为... 继续阅读 >
202105-23 解决Django transaction进行事务管理踩过的坑 概要Transaction是django进行数据库原子性操作在python层面上的实现。简单来说,被transaction.atomic()包裹的代码块只在代码块顺利完成后进行数据库层面的commit。实际开发当中,遇到了一些问题。1.transaction事务内不执行数据库的commit操作除非手动committransaction最基本的功能。代码场景:在事务当前启动celery异步任务,无法获取未提交的改动。defexample_view(request):withtransaction.atomic():change... 继续阅读 >
202105-23 Django debug为True时,css加载失败的解决方案 django上线后,需要把setting.py文件的debug=True改为False,以防暴露代码报错问题。因为我项目用到css的地方只有admin管理员登陆这块,没有自定义的css等,所以我的css文件夹名称定义成static1.更改setting.py文件STATIC_URL=‘/static/‘STATIC_ROOT=os.path.join(BASE_DIR,'../static/')STATIC_URL是css的加载路径,项目中如果用到了css的地方,会沿着该路径寻找这个路径下的css文件STATIC_ROOT是存放所有的static文件,运行py... 继续阅读 >
202105-23 Django跨域请求无法传递Cookie的解决 问题在使用Django+Vue进行前后端分离开发时,发现在跨域访问情况下,后台HttpResponse在使用set_cookie方法后,浏览器无法获取Cookie。解决方法Django端使用django-cors-headers解决跨域问题,修改settings.py文件。具体方案:Flask和Django中解决跨域请求问题对axios进行设置,允许浏览器设置或获取Cookie。axios.defaults.withCredentials=true;Django之Cookie操作fromdjango.httpimportHttpResponse#... 继续阅读 >
202105-23 使用Flask和Django中解决跨域请求问题 Flask解决跨域1、下载flask_cors包pipinstallflask-cors2、使用flask_cors的CORS代码示例fromflask_corsimport*app=Flask(__name__)CORS(app,supports_credentials=True)Flask-CORS文档:https://flask-cors.readthedocs.io/en/latest/Django解决跨域1、安装django-cors-headerspipinstalldjango-cors-headers2、修改settings.pyINSTALLED_APPS=[...'corsheaders',...]MIDDLEWARE_CLASSES=('django... 继续阅读 >
202105-23 Django request.META.get()获取不到header头的原因分析 在使用Django过程中需要开发一些API给其他系统使用,为了安全把Token等验证信息放在header头中。如何获取:使用request.META.get("headerkey")来获取注意:如果headerkey为auth-token,即headers={'auth-token':'1234'}应该使用request.META.get("HTTP_AUTH_TOKEN")获取headerkey中的小写转为大写,横线“-”转为下划线“_”,并且加上前缀HTTP尤其注意headerkey中不应该包含HTTP前缀,以及符号"_",否则会取不到对应的值补充:Djan... 继续阅读 >