《Flask Web开发实战:入门、进阶与原理解析》笔记代码学习和注释(第一章-初识Flask 和 第二章-Flask与HTTP)

本文是《Flask Web开发实战》书籍的学习笔记,涵盖了C/S和B/S架构,MVC与MTV框架模式的解释,并对相关代码进行了注释。书中介绍了Flask Web应用的工作流程,通过HTTP协议,客户端向服务器发送请求,服务器通过WSGI与Flask交互,返回处理结果。同时,对比了MVC和Flask使用的MTV模式,强调了视图函数在Flask中的控制器角色。完整代码可在GitHub找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

学习这本书,然后自己对其中的代码加了一些注释,便于学习和理解。
代码可以在https://github.com/greyli/helloflask/下载到

二、C/S和B/S

先看两张书上的图:
在这里插入图片描述在这里插入图片描述第一张图是C/S架构的图,C(Client,用户),S(Server,服务器)
第二张是Flask Web的工作流程
客户端先通过http,用URL向服务器端发送请求,然后服务器端通过一个约定好的叫做WSGI的标准,与Flask程序交互,返回Flask处理好的东西,然后再通过Web服务器传回客户端浏览器。

三、MVC和MTV框架模式

MVC是一种常用的框架模式,MTV是Flask所用的框架模式,但是二者相差不大。

  1. MVC的V(view)对应的是MTV的T(template),二者都起视图展示的作用,只是叫法不同,在Flask中,template主要由待渲染的HTML文件组成。
  2. MVC的C(control)对应的是MTV的V(view),这里要注意的是,这个view是视图函数,其实它起一个控制器的作用,视图函数的意思就是用来控制视图的函数。
  3. MVC和MTV的M指的是模型,用来处理程序需要操作的数据,先按下不表,以后再提到。

在这里插入图片描述

四、代码及注释

import os
try:
    from urlparse import urlparse, urljoin
except ImportError:
    from urllib.parse import urlparse, urljoin

from jinja2 import escape
from jinja2.utils import generate_lorem_ipsum
from flask import Flask, make_response, request, redirect, url_for, abort, session, jsonify

app = Flask(__name__)
app.secret_key = os.getenv('SECRET_KEY', 'secret string')#这个和cookie还有session有关,用来设置session秘钥


# get name value from query string and cookie #从query string和cookie中,查询name变量
#query string指的是查询字符串,详见P29,比如URL:http://helloflask.com/hello?name=Grey,其中的?name=Grey

@app.route('/')#一般来讲必须有主页的视图,不然容易报错,这里是让/主页和/'hello',共用了一个视图函数,会返回相同的效果。
@app.route('/hello')
def hello():
    name = request.args.get('name')#args从url的query中找到name后面的键值,这里不能用cookies,因为还没生成对应的cookies
    if name is None:#记得判断如果为空,则默认为human
        name = request.cookies.get('name', 'Human')#第一个参数是self key,即键,就设置为name就行了,# 第二个参数是default值,get函数既有返回值,又能进行赋值处理
    #如果后面生成了cookie的话,这里可以用cookies(下面那个set_cookie视图函数可以生成cookie
    response = '<h1>Hello, %s!</h1>' % escape(name)  # escape name to avoid XSS
    # return different response according to the user's authentication status
    # 根据用户的身份验证状态返回不同的响应
    if 'logged_in' in session:
        response += '[Authenticated]'
    else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值