from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
# app.run(debug=True) 将debug设置为True的另一个好处是,程序启动后,会自动检测源码是否发生变化,若有变化则自动重启程序。
# app.run(host='0.0.0.0', port=80, debug=True) 默认情况下,Flask绑定IP为127.0.0.1,端口为5000。我们也可以自定义
# 0.0.0.0代表电脑所有的IP。80是HTTP网站服务的默认端口。什么是默认?比如,我们访问网站http://www.example.com,其实是
# 访问的http://www.example.com:80,只不过:80可以省略不写。
app.run()
运行server.py然后在浏览器中输入:http://127.0.0.1:5000/会显示如下页面:
上面只是做了一个简单的测试,下面就用具体的网页展示一下:
在templates下面创建default.html文件,文件内容为:
<html>
<head>
<title>title>
head>
<body>
{{ result }}
body>
html>
server.py中的内容改为:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/demo')
def demo():
result="Jimmy"
return render_template('default.html', page_title='Jimmy', result=result) # 后面的数据可以传递多个
if __name__ == '__main__':
app.run('0.0.0.0',port=5000, debug=True)
在浏览器中输入:http://127.0.0.1:5000/demo如下图效果:
到此一个小的基于Flask的python-web项目算是做完了。我就是基于这样一个模板来进行的我自己的项目的开发。下面我就介绍下我开发的小项目以及遇到的问题和解决问题的方式。
我简单介绍下我的项目的业务逻辑,项目数据来源分为本地和网上数据两部分,本地数据从项目小组写的代码中分析出来,网上的资源通过网站给的接口获得。
连接数据库:
首先安装pymysql
pip install pymysql
import pymysql.cursors
# localhost:数据库所在的主机IP,root:登录数据库的名称,password:数据库密码,charset:字符集
conn = pymysql.connect("localhost", "root", "password", "python", charset='utf8' )
cur = conn.cursor()
sql='select t.name from test t where t.date<\'%s\'' % date # 这里要注意如果参数是字符串的话应该添加用“''”括起来,例如:“\'%s\'”
cur.execute(sql) # sql为sql查询语句
conn.commit()
result = cur.fetchall() # 获取所有查询结果,返回值是一个元组
result = cur.fetchone() #返回第一条查询结果,也是以元组的形式返回
问题:
问题一:
在通过下面方式获取网上数据的时候会出现警告:
requests.request(method, url, **kwargs)
警告:
D:\tools\python\Lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warningsInsecureRequestWarning)
解决方法:
equests.packages.urllib3.disable_warnings()
res = requests.request(method, url, **kwargs)
问题二:
前端页面获取后端页面传入的值
如果是单个值的话可以这样获取
{{ result }}或者{% print result %}
如果是列表、元组或字典类型可以这样获取
{% for key,value in result.items() %}
<tr>
<td>
<a href="/testinfo?testName={{ key }}" target="showframe22" style="color:blue;"><p style="font-size:100%" >{{ key }}p>a>
td>
<td>{{ value*100 }}{% print '%' %}td>
tr>
{% endfor %}
问题三
后台如何获取前台通过点击得到相应点击对应的值
<a href="/testinfo?testName={{ key }}" target="showframe22" style="color:blue;"><p style="font-size:100%" >{{ key }}p>a>
这里通过
<a href="/testinfo?testName={{ key }}">a>
来将前台对应的值传入到后台
后台通过如下方式获取前台传入的值
testName=request.args.get('testName')
我在这里用的内联框架是
<iframe src="/qiantao" name="showframe2" height="800px" width="1320px">iframe>
最后将做好的项目放到服务器上就可以了
由于此项目的数据源是变化的,所以我写了一个定时任务,每天凌晨会下载代码到本地和网站上的数据,然后将数据插入到本地mysql数据库
自动化脚本autoshell.sh内容:
cd /root/*** && python ***.py
这个脚本的动作时先进入到指定的工作目录,然后运行相应的程序
定时任务
0 0 * * * /root/***/autoshell.sh
参考:Python Flask Web 框架入门