Python实训(7)--基于Flask的web应用搭建 --读取信息与返回html

什么叫轻量级,这就叫轻量级(战术后仰)

启动一个输出helloworld的Web应用

环境:

进入虚拟环境,用pip安装flask

pip install flask

在这里插入图片描述

编写代码:

建一个用来放flask运行代码的文件夹,并新建一个app.py用来写代码
在这里插入图片描述

from flask import Flask

app = Flask(__name__) #创建一个swgi应用

@app.route('/')       #声明调用helloWorld的地址栏后缀
def helloWorld():	  
    return "HelloWorld" #返回一段文字 不过这里不是html元素,仅仅是一段文字而已
    
if __name__=='__main__':
    app.run(port = 19997, debug = True) #设置端口和启动模式

然后用cmd启动app:
在这里插入图片描述
打开浏览器 录入 就看到了
在这里插入图片描述
(背景绿色是浏览器插件,不是我写的代码有哪里修改了背景的!)
(这比tomcat实现少好多代码和步骤啊(抱头)不过其实tomcat功能和支持还是多一些,两码事啊两码事)

通过地址栏读取处理与返回信息:

from flask import Flask


app = Flask(__name__) #创建一个swgi应用

@app.route('/')
def helloWorld():
    return "HelloWorld"
    
@app.route('/user/<name>,<age>')#用get获取地址栏信息返回对应内容
def decide_user(name,age):
    if int(age)>=18:
        return ('Good to see you  '+name)
    return ('Not today bro  '+name)
   //这里是新增的代码,主要在地址信息中添加了用‘,’分开的<>符号,这样能从地址栏get若干信息
   //然后再调用下面的函数,从参数列表中依次传入
   //(这些不是python的注释,只是为了看的清,如果复制请删除)
   
if __name__=='__main__':
    app.run(port = 19997, debug = True)

    

这样就能从地址栏获取信息了:
在这里插入图片描述
在这里插入图片描述

跳转页面:

from flask import redirect
@app.route('/login')
def login():
    return redirect('https://passport.bilibili.com/login')
//新增的代码,规则就是这样,套用就是了
    

将数据打包为html返回(重点):

展示一个已有的html文档:

暴力的方法如下,硬构造html的字符串,然后返回,构造起来非常麻烦,降低可读性

@app.route('/')
def returnHtml():
	return 一个html格式的字符串

所以要学会用“模板”来打包数据。
首先看一个最简单的模板的使用

(这里修改了app.config[‘SEND_FILE_MAX_AGE_DEFAULT’]
是因为之后要用到css这样的静态文件,并且修改一下刚刚用过的端口
避免在频繁修改css时体现在html上的
更新不及时,默认居然是12小时,debug要死。一时间看不懂没关系,用就是)

from flask import Flask
from flask import render_template

app = Flask(__name__) #创建一个swgi应用
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=5)

@app.route('/')
def helloWorld():
    return render_template('index.html')

if __name__=='__main__':
    app.run(port = 19996, debug = True)

在这里插入图片描述
创建目录templates(默认在这个文件夹中寻找html)
创建、编写index.html

<!DOCTYPE html>
<html lang='zh'>
	<head>
		<meta charset='utf-8'/>
		<title>HelloWorld</title>
	</head>
	<body>
			MainBody
	</body>
</html>

在这里插入图片描述在这里插入图片描述
现在显示的就是一个html文档了!

在html文档中设置数据:

上例还没有真正为html传入数据
为了传入数据,首先在html中要为数据留下放置他们的空间
修改index.html如下:

<!DOCTYPE html>
<html lang='zh'>
	<head>
		<meta charset='utf-8'/>
		<title>HelloWorld</title>
	</head>
	<body>
			{{user.name}}<br/>
			{{user.info}}
	</body>
</html>

这里双花括号就是声明user变量

@app.route('/<name>,<age>')
def helloWorld(name,age):
    if int(age)>=18:
        user={'name':name,'info':'Good to see you'}
    else :
        user={'name':name,'info':'Not today bro'}
        
    return render_template('index.html',user=user)

传入参数只需要修改render_template,要使用默认参数的设置方式
本来python就不太强调数据类型,在这里也是使用很宽泛的

在这里插入图片描述在这里插入图片描述
访问则得不同的html文档
更多的使用参照:
https://blog.csdn.net/bestallen/article/details/52055061?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-5

其他内容:

链接到外部css表:

虽然这里不是flask的内容,但还是记录一下,毕竟是我第一次使用:

修改index.html 指定css的链接和为需要应用css的地方命名div.name和div.info

<!DOCTYPE html>
<html lang='zh'>
	<head>
		<meta charset='utf-8'/>
		<title>HelloWorld</title>
		<link rel='stylesheet' type='text/css' href = 'static/css/index.css'/>
	</head>
	<body>
			<div class='name'>
				{{user.name}}
			</div>
			<hr/>
			<div class='info'>
				{{user.info}}
			</div>
	</body>
</html>

在这里插入图片描述
在对应目录下新建并编辑index.css 确保static和templates同级!

div.name{
	background-color:gray;
}
div.info{
	background-color:black;
	color:white;
	font-style:italic;
	
}

在这里插入图片描述
运行就看到css样式成功应用了

moment组件显示时间:

from flask_moment import Moment

app = Flask(__name__) #创建一个swgi应用
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=5)
Moment(app)

    
@app.route('/time')
def time():
    return render_template('time.html')

time.html内容:

<!DOCTYPE html>

<html>
	<head>
		<meta charset='utf-8'>
		<title>当前时间</title>
		{{moment.include_jquery()}}
		{{moment.include_moment()}}
		{{moment.lang('zh-cn')}}
	</head>
	
	<body>
		{{moment().format("YYYY-MM-DD h:mm:ss a" )}}
	</body>
</html>

这里具体怎么实现的我也不很清楚,
关键是app.py中调用的Monent(app)
推测在这个方法里对moment进行全局的设定,才能显示当前时间的

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值