您的位置 首页 flask

pycharm flaskweb demo

pycharm flaskweb  demo

python上手--flask框架web开发实践 - 知乎 (zhihu.com)

在pycharm里安装flask的方法如下:

在项目的setting设置菜单里选择解释器窗口,点击右侧的+号寻找可以安装的第三方库。选中Flask,点击安装即可。視网络速度快慢,一般都比较快的可以完成安装。

新建一个 flaskdemo 项目

2-

from flask import  Flask    #导入Flask类
app=Flask(__name__)         #实例化并命名为app实例
if __name__=="__main__":
    app.run(port=2020,host="127.0.0.1",debug=True)   #调用run方法,设定端口号,启动服务

运行此文件

 

此时打开浏览器,在浏览器地址输入127.0.0.1:2020运行,页面会提示报错,因为此时还没有任何内容输出,仅仅是web服务的搭建。

 

3- 网页输出

如果在main.py文件中开始加入一些内容,并使得能在网页上显示,就进入了我们常见的web开发模式了。由于main.py为python文件,而不是我们常用的HTML,因此无法直接使用html语言来写界面和内容。

对于web开发和运行而言,在浏览器地址栏那我们知道是url,也就是请求的网页地址,如http://127.0.0.1/index或者http://127.0.0.1/home/user、或者http://127.0.0.1/index/news.html这些模式。在使用一些服务器语言来实现web开发时,url构建和定位使用了面向对象或者函数方式。如http://127.0.0.1/home/user,可以分拆理解:http://127.0.0.1为服务器地址,默认为请求index方法页面。

地址后面的/home/user可以理解为定位到服务器地址文件夹里home类里的user方法页面。

在使用flask框架来开发时,这种url的构建和定位也是非常重要的。我们先来看一个简单案例:

 

from flask import  Flask
app=Flask(__name__)

@app.route('/')
def index():
    return 'welcome to my webpage!'

if __name__=="__main__":
    app.run(port=2020,host="127.0.0.1",debug=True)

 

代码中使用了装饰器来制定路由url,具体写法如下:

@app.route('/')    #调用route路由方法,括号里给定参数,/符号默认为首页
@app.route('/home/user')    #调用route路由方法,/home/user定位到访问user方法页面

上述那个return语句里还可以加入html代码,这样就可以输出一定的格式控制网页内容了,如修改如下:

@app.route('/')
def index():
    return '<h3>welcome to my webpage!</h3><hr><p style="color:red">输出语句测试</p>'

4-flask库里的Jinja2模板引擎

不过要在return里语句加入html长串代码,显然不合适,所以需要使用flask库里的Jinja2模板引擎,调用flask模块里的render_template方法,将静态的html文件传入,同时也可以将数据传输到html文件中显示。此时我们修改一下上述案例代码:

from flask import  Flask,render_template  #导入render_template模块
app=Flask(__name__)

@app.route('/')
def index():
    return render_template("index.html")   #调用render_template函数,传入html文件参数

if __name__=="__main__":
    app.run(port=2020,host="127.0.0.1",debug=True)

 

如果这样运行,pycharm终端会提示报错,因为找不到index.html文件。

flask框架在使用这个模板函数时,默认去寻找项目文件夹下的templates文件夹里的html文件。

因此我们需要先新建一个templates文件夹,然后在里面新建一个html文件,项目结构及内容参考如下:

 

5- 给html 传递数据

如果想通过rendertemplate方法传输数据,在html文件中显示出来,一方面需要在render_template函数中加入数据参数,如data=msg,这里msg为参数值,data为参数名。

在html文件中就需要使用jinjia2模板里的数据控制语法:

{% python语句  %}
{{ 变量 }}

我们继续将上述案例代码修改一下,来测试一下数据传输效果:

from flask import  Flask,render_template
app=Flask(__name__)

@app.route('/')
def index():
    msg="my name is baimeidashu.com, China up!"
    return render_template("index.html",data=msg)  #加入变量传递

if __name__=="__main__":
    app.run(port=2020,host="127.0.0.1",debug=True)

然后在index.html中修改:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>welcome to 2020</title>
</head>
<body>
   welcome to my webpage
  <hr>
   <p>这是采用render_template模板方法获得的内容:</p>
   <br>
  {{data}}  #显示出传递过来的变量内容
</body>
</html>

 

 

如果想在该页面添加图片或者css、js文件,就需要使用到flask框架默认设置的static目录方式,即将这些图片、css、js文件存放到项目目录下的static目录,然后使用路由指向。

因此首先在项目目录下新建一个static文件夹,然后在里面新建一个img目录,存入一张图片名为main.jpg。在页面中使用的时候方式如下:

<img src="{{ url_for('static',filename='img/main.jpg')}}" alt=""> 

使用jinjia2模板的url_for路由函数,指定为static目录下,filename指向具体图片。

flask开发简单网站: :连接

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章