Python面试题分享(八)

本文分享了Python面试中的Flask知识点,包括session的三种实现、蓝图的应用以及自定义正则URL。同时,也介绍了Django项目创建、项目结构及MVC与MVT模式的理解,并给出了Django ORM查询示例。
摘要由CSDN通过智能技术生成

11. Flask项目中如何实现 session 信息的写入?

Flask中有三个 session

1. 数据库中的 session,例如: db.session.add()

2. flflask_session 扩展中的 session,使用: from flask_session import Session ,使用 第三方扩展的 session 可以把信息存储在服务器中,客户端浏览器中只存储 sessionid

3. flflask 自带的 session,是一个请求上下文, 使用: from flask import session 。自带的 session 把信息 base64加密后都存储在客户端的浏览器 cookie

12. 蓝图的应用

应用场景: 项目模块化开发,每一个模块对应一个蓝图来管理视图

1. 创建 一个蓝图对象

blue = Blueprint("blue"__name__, url_prefix="/blue")

2. 在这个蓝图对象上进行操作 ,例如注册路由、指定静态文件夹、注册模板过滤器...

@blue.route('/')

def blue_index():

      return 'Welcome to my blueprint'

3. 在应用对象上注册这个蓝图对象

from xx import blue # 注册前导入,防止出现循环导包问题

app.register_blueprint(blue)

 

13Flask 中正则 URL 的实现?

@app.route('') URL 显式支持 stringintflfloatpath uuid any 6 种类型,隐式支持正则。

具体实现步骤为:

导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录

自定义转换器:自定义类继承于转换器基类

添加转换器到默认的转换器字典中

使用自定义转换器实现自定义匹配规则

1. 导入转换器基类

from werkzeug.routing import BaseConverter

2. 写正则类(自定义转换器),继承 BaseConverter,将匹配到的值设置为 regex 的值。

 

# 自定义正则转换器

class RegexConverter(BaseConverter):

      def __init__(self, url_map, *args):

           super(RegexConverter, self).__init__(url_map)

           # 将接受的第1个参数当作匹配规则进行保存

          self.regex = args[0]

3. 添加转换器到默认的转换器字典中,并指定转换器使用时名字为: re

 

app = Flask(__name__)

# 将自定义转换器添加到转换器字典中,并指定转换器使用时名字为: re

app.url_map.converters['re'] = RegexConverter

4. url中使用正则

@app.route('/user/<re("[0-9]{3}"):user_id>')

def user_info(user_id):

      return "user_id %s" % user_id

 

Django

1. Django 创建项目的命令?

django-admin startproject 项目名称

python manage.py startapp 应用 app 名 如: python manage.py startapp app01

2. Django 创建项目后,项目文件夹下的组成部分(对 mvt 的理解)?

项目文件下的组成部分:

manage.py 与项目进行交互的命令行工具集的接口 项目管理器 执行python manage.py来查看所有命令

与项目同名的目录,项目的一个容器 ,包含项目的配置文件,目录名称不建议修改

urls.py url配置文件,Django项目中所有地址(页面)都需要我们自己去配置URL

settings.py :项目的总配置文件,里面包含了数据库、web应用、时间等各种配置

init.py python中声明模块的文件,内容默认为空

wsgi.py python 服务器网关接口,python应用与web服务器之间的接口 ,在项目开发中一般不做修改

3. MVC,MVT 解读的理解?

MVC简介:

MModel,模型,和数据库进行交互

VView,视图,负责产生 Html 页面

CController,控制器,接收请求,进行处理,与 M V 进行交互,返回应答。

整体流程:

1. 用户点击注按钮,将要注册的信息发送给网站服务器。

2. Controller 控制器接收到用户的注册信息,Controller 会告诉 Model 层将用户的注册信息保 存到数据库

3. Model 层将用户的注册信息保存到数据库

4. 数据保存之后将保存的结果返回给 Model 模型,

5. Model 层将保存的结果返回给 Controller 控制器。

6. Controller 控制器收到保存的结果之后,或告诉 View 视图,view 视图产生一个 html 页面。

7. View 将产生的 Html 页面的内容给了 Controller 控制器。

8. Controller Html 页面的内容返回给浏览器。

9. 浏览器接受到服务器 Controller 返回的 Html 页面进行解析展示

MVT简介:

MModel,模型,和 MVC 中的 M 功能相同,和数据库进行交互。

Vview,视图,和 MVC 中的 C 功能相同,是核心,负责接收请求、获取数据、返回结果

TTemplate,模板,和 MVC 中的 V 功能相同,产生 Html 页面

整体流程:

1. 用户点击注册按钮,将要注册的内容发送给网站的服务器。

2. View 视图,接收到用户发来的注册数据,View 告诉 Model 将用户的注册信息保存进数据库。

3. Model 层将用户的注册信息保存到数据库中。

4. 数据库将保存的结果返回给 Model

5. Model 将保存的结果给 View 视图。

6. View 视图告诉 Template 模板去产生一个 Html 页面。

7. Template 生成 html 内容返回给 View 视图。

8. View html 页面内容返回给浏览器。

9. 浏览器拿到 view 返回的 html 页面内容进行解析,展示。

 

4. Django models 利用 ORM Mysql 进行查表的语句(多个语句)?

字段查询:

all():返回模型类对应表格中的所有数据。

get():返回表格中满足条件的一条数据,如果查到多条数据,则抛异常:MultipleObjectsReturned, 查询不

到数据,则抛异常:DoesNotExist

fifilter():参数写查询条件,返回满足条件 QuerySet 集合数据。

条件格式:

模型类属性名__条件名=

注意:此处是模型类属性名,不是表中的字段名

关于 fifilter 具体案例如下:

1. 判等 exact

总结:

 

当一类为条件的时候,多类当中有关联属性,直接拿关联属性即可找到一类对应属性的条件

1. 显示什么就先写什么

2. 判断条件为一类还是多类,如果条件为多类--通过类名找,如果条件为一类--通过关联属性查

3. 显示什么就先写什么,Django框架会遍历先写的模型类里的内容如果条件为一类的此时先写的模型类当中有 关联属性,此时就可以根据关联属性查找。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值