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