Python暑假四日培训小专题【Flask】

以前对Python做网站一直没什么概念,也提不起什么兴致来研究,趁这次培训有涉及到这方面的内容,简单了解了下,记录下过程以备后用。

培训课中有提到Django和Flask,主要介绍了下Flask的入门知识,同时自己查了下资料Django貌似复杂了点,Flask更加的简单,所以也就主要学习了下Flask的相关知识。

1、安装Flask模块:pip install flask

2、撰写web监听处理文件模块flaskServer

from flask import Flask
import flask
app=Flask(__name__)    #__name__系统内置标识符,获取当前入口名,如果是本文件模块为__main__
#以下定义路由以及对应的处理函数,可以定义多组
@app.route("/",method=["get","post"])
def index():
    htmlStr="这里放一些HTML标记内容"
    return htmlStr
##########################################
if __name__=="__main__":
    app.run(
        host="0.0.0.0",    #如果不指定host参数,那么默认为127.0.0.1,但这样本机之外的无法访问
        port="8000"        #如果不指定port参数,默认端口为5000
    )

以上的Python代码中主要关注下路由的设定,目前就是访问默认网站根目录就是相当于调用了index处理函数,该函数就是返回了一个html内容,这样就可以在浏览器中显示对应的内容。然后最下面的if判断是为了保证是直接运行该模块文件,而不是将该模块import到其他模块文件中。

但是这样的示例有个比较致命的缺陷,就是如果网页很复杂的话index函数中的htmlStr字符串会变的很庞大,所以和目前比较主流的模板渲染方式一样,在Python中也可以利用设定模板,然后渲染呈现。修改后代码如下所示:

from flask import Flask,render_template
import flask
app=Flask(__name__)    #__name__系统内置标识符,获取当前入口名,如果是本文件模块为__main__
#以下定义路由以及对应的处理函数,可以定义多组
@app.route("/",method=["get","post"])
def index():    
    return render_template("index.htm")    #利用模板渲染的方式加载外部html文件
##########################################
if __name__=="__main__":
    app.run(
        host="0.0.0.0",    #如果不指定host参数,那么默认为127.0.0.1,但这样本机之外的无法访问
        port="8000"        #如果不指定port参数,默认端口为5000
    )

以上的代码与前面的相比主要区别在于:1、多导入了一个render_template函数;2、index处理函数中不是直接返回HTML字符串,而是返回了一个模板文件。这边最关键的问题就是index.htm文件存放在哪里?这个html模板文件需要存放在与当前这个Python文件同层目录下的templates目录中。然后在这个index.htm文件中可能会用到外部的一些css、js、img等资源文件,这些资源文件需要放在当前Python文件同层目录下的static目录中,然后为了方便管理,再分别放置到对应的css、js、image目录中(该操作不是必须的)。也就是说现在的网站目录结构如下图所示:

 这里再列下index.htm这个模板文件的内容,如下所示:

<link type="text/css" rel="stylesheet" href="../static/css/site.css" />
<link type="text/css" rel="stylesheet" href="{{url_for('static',filename='css/site.css')}}" />
<div>hello {{uid}}</div>
{% for n in range(10) %}
{{n}}
{% endfor %}
<a href="http://www.zisu.edu.cn">查看浙外官网</a>
<img src="../static/img/1.jpg" alt="" style="width:100px" />

以上的模板文件中主要关注下以下几点:
1、link的href的值:link标记表示引入外部的CSS文件,然后这里列出了两种写法,一种的静态写法,一种是动态写法
2、{{uid}}是什么内容?这个是对路由处理函数index的一个扩充,就是在index函数的return语句中增加了一个往模板中传递值的参数,改写为:return render_template("index.htm",uid="cly"),这样就可以将函数中的uid值传递并填充到index.htm模板文件的{{uid}}这个占位符位置了。还有更深入的改进就是在index处理函数中传递的uid的值是固定字符串cly,还可以修改为动态获取的参数值,主要是get方式和post方式从客户端传递过来的值,分别写为:request.args["theID"]和request.form["theID"]。这里要注意的是需要多引入一个flask中的request函数
3、for循环,这里使用了模板中可识别的标记{%%}来直接书写Python代码。这样很多操作就可以直接在模板文件处理了。当然这个模板标记了解的还不多,这个还是比较重要的。

以上内容都准备好之后就可以运行flaskServer.py这个文件了,运行后就表示开启了web服务监听,监听本地IP的8000端口。这个不能停止,停止了WEB服务也就停止了。然后在浏览器中输入http://服务器IP/注册的路由名?theID=xxxx(表示get方法传递参数theID到路由处理函数,那么在路由处理函数中就可以使用request.args["theID"]来获取到值xxxx了)。

使用Flask搭建一个简单的Web服务,并测试浏览web应用成功。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值