Unicode
定长编码:2
个字节表示一个字符
.py
文件放在磁盘上使用UTF—8储存(外存)
UTF-8
变长编码:UTF-8
是Unicode
的实现,1-4
个字节表示一个字符,英文1
个字节,汉字3
个字节。
- 打开或新建文件
open
内置函数open()
创建文件对象
通过
IO
流将磁盘文件中的内容与程序中的对象中的内容进行同步
3.文件读写操作.py
文件
文件类型:按文件中数据的组织形式,文件分为以下两大类:
1.
文本文件
:存储的是普通“字符”文本,默认为Unicode字符集,可以使用记事本程序打开
2.
二进制文件
:把数据内容以字节进行存储,无法用记事本打开,必须使用专用的文软件打开,举例:MP3
音频文件JPG
图片.doc
文档等
以只读模式打开文件,文件的指针将会放在文件的开头 |
以只写方式打开文件,如果文件不存在就创建,如果文件存在则覆盖原有内容,文件指针放在开头 |
以追加模式打开文件,如果文件不存在则创建,文件指针在开头,如果文件存在,则在文件末尾追加内容,文件指针在原文末尾 |
以二进制方式打开文件,不能单独使用,需要与其它模式一起使用:rb 或者wb
|
以读写方式打开文件,不能单独使用,需要与其它模式一起使用,a+
|
从文件中读取size 个字节或字符返回,若省略[size] 则读到文件末尾
|
把文本文件中每一行都作为独立的字符串对象,并将这些对象放回列表返回 |
将字符串str 内容写进文件
|
将字符串列表s_list 写入文本文件,不添加换行符
|
把文件指针移到新的位置,offset 表示相对whence 的位置;offset :为正往结束方向移动, whence 不同的值呆鸟不同的含义;0 :从文件开头开始计算; 1 :从文件当前位置开始计算
|
缓冲区的内容写入文件,但不关闭文件 |
把缓冲区内容写入文件,同事关闭文件,释放文件对象资源 |
with
语句可以自动管理上下文资源,不论什么原因跳出with
块,都能确保文件正常关闭,以此来达到释放资源的目的
__exit__()
,遵守了上下文管理协议,这句表达式的对象就是上下文管理器,离开运行时上下文,自动调用上下文管理器的特殊方法
with
语句复制文件:
1.
OS
模块是python
内置的与操作系统功能
和文件系统
相关的模块,该模块中的语句执行结果通常与操作系统有关,在不同操作系统上运行,得到的结果可能不一样.
2.
os
模块于os.path
模块用于对目录或文件进行操作
os
模块操作目录相关函数
os
模块操作目录相关函数
返回指定路径下的文件和目录信息 |
将path 设置为当前工作目录
|
os.path
模块操作目录相关函数
用于获取文件目录的绝对路径 |
用于判断文件或目录是否存在,如果存在返回True ,否则返回False
|
将目录与目录或者文件名拼接起来 |
从一个目录中提取文件名 |
从一个目录中提取文件名 |
6.dirname(path) 从一个路径中提取文件路径,不包括文件名
.py
文件
Python基础语法到这里就结束啦!喜欢博主的可以给博主点个关注。
Python部落()组织翻译,禁止转载,欢迎转发。
AJAX架构的组件是什么?
AJAX架构有两个组件:
控件功能的扩展程序之一。扩展程序使用一个JavaScript代码块来添加新的和增强的功能到 Framework AJAX是一个在应用程序添加功能。通过使用部分页面呈现,它可以用于更新内容。可以为部分页面而不是整个页面进行刷新。
3 Ajax客户端库的组件?
以下组件用于Ajax客户端库:
Ajax的基本目标是:
·减少Web服务器命中
·提供服务器端和客户端框架
Django面试中,首先被问得问题就是对Django的认识,然后是Django的生命周期,内置组件,FBV和CBV,再有就是orm的方法,cookie和session的区别等,面试者多做些准备还是有必要的。
学完了Python和Django的小伙伴,找工作面试时必经的一关,那么在面试中,面试官通常会问哪些问题呢?下面来看一下。
(推荐教程:django视频教程)
1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
2.Django内置的ORM跟框架内的其他模块耦合程度高。
应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;
理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。
WSGI是一种WEB服务器 ==网关接口==。 是一个Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范(协议)。
在生产环境中使用WSGI作为python web的服务器。Python Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。
uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。
uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型。
Django 是一个 Web 框架,框架的作用在于处理 request 和 reponse,其他的不是框架所关心的内容。所以怎么部署 Django 不是 Django 所需要关心的。
Django 所提供的是一个开发服务器,这个开发服务器,没有经过安全测试,而且使用的是 Python 自带的 simple HTTPServer 创建的,在安全性和效率上都是不行的
而uWSGI 是一个全功能的 HTTP 服务器,他要做的就是把 HTTP 协议转化成语言支持的网络协议。比如把 HTTP 协议转化成 WSGI 协议,让 Python 可以直接使用。
uwsgi 是一种 uWSGI 的内部协议,使用二进制方式和其他应用程序进行通信。
WSGI是Python在处理HTTP请求时,规定的一种处理方式。如一个HTTP Request过来了,那么就有一个相应的处理函数来进行处理和返回结果。WSGI就是规定这个处理函数的参数长啥样的,它的返回结果是长啥样的?至于该处理函数的名子和处理逻辑是啥样的,那无所谓。简单而言,WSGI就是规定了处理函数的输入和输出格式。
四.django请求的生命周期?
当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端
请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,
一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.
客户端浏览器接收到返回的数据,经过渲染后显示给用户.
3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
5.中间件,对响应的数据进行处理。
6.wsgi,将响应的内容发送给浏览器。
五.列举django的内置组件?
Admin是对model中对应的数据表进行增删改查提供的组件
model组件:负责操作数据库
form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示
ModelForm组件即用于数据库操作,也可用于用户请求的验证
六.列举django中间件的5个方法?以及django中间件的应用场景?
七.简述什么是FBV和CBV?
FBV和CBV本质是一样的,基于函数的视图叫做FBV,基于类的视图叫做CBV
提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
九.如何给CBV的程序添加装饰器?
filter(**kwargs): 它包含了与所给筛选条件相匹配的对象。获取不到返回None get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个。 如果符合筛选条件的对象超过一个或者没有都会抛出错误。 并不是一系 model的实例化对象,而是一个可迭代的字典序列前提:有外键存在时,可以很好的减少数据库请求的次数,提高性能
select_related通过多表join关联查询,一次性获得所有数据,只执行一次SQL查询
prefetch_related分别查询每个表,然后根据它们之间的关系进行处理,执行两次查询
直接执行SQL语句(类似于pymysql的用法) # 更高灵活度的方式执行原生SQL语句
执行原始sql并返回模型
依赖model多用于查询
cookie是保存在浏览器端的键值对,可以用来做用户认证
将用户的会话信息保存在服务端,key值是随机产生的字符串,value值是session的内容
依赖于cookie将每个用户的随机字符串保存到用户浏览器上
十五.如何使用django orm批量创建数据?
十六.django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新
删除关联表中的数据时,当前表与其关联的field的操作
django2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常
1.可以与if标签来连用
2.自定义时需要写两个形参 3. 在py文件中写代码
1.可以传多个参数,没有限制
2.不能与if标签来连用
2、在包中创建一个py文件
第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;
第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;cookies:{csrftoken:xxxxx}
第三步:后端校验前端请求带过来的token和SESSION里的token是否一致。
1.后端将csrftoken传到前端,发送post请求时携带这个值发送
2.获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端
WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程 。
2.uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http 等协议。注意uwsgi是一种通信协议,而uWSGI是实现uwsgi协议和WSGI协议的 Web 服务器。uWSGI具有超快的性能、低内存占用和多app管理等优点,并且搭配着Nginx就是一个生产环境了,能够将用户访问请求与应用 app 隔离开,实现真正的部署 。相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。
更多相关教程推荐:python web教程