Flask项目总结(Python)

Flask项目总结


此项目是基于Python的、Flask框架的web项目,实现的主要功能就是把数据库中的数据以表格的形式在浏览器上显示出来,并实现了相应的界面跳转。这是我学习python这门语言后做的第一个小项目,所以想把它总结下,记录下来。
如果那里有做的不好或者理解出现偏差的地方,还望大家多多批评指正,也希望能和大家多多交流!——悭臾
下面我就大概说一下我的开发思路:
我是用Pycharm开发工具开发的,首先应该通过pip安装Flask(pip install Flask),是一个简单的Flask框架,启动服务后可以在浏览器端进行访问,在页面上会显示一些简单的返回数据。
利用Flask框架开发首先创建项目,创建一个如下的目录并在pycharm中打开:
Demo
Demo/static
Demo/templates
Demo/server.py
static和templates目录是默认配置,其中static用来存放静态资源,例如图片、js、css文件等。templates存放模板文件。
server.py文件中存放网站逻辑。在server.py文件中输入一下内容:

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/会显示如下页面:
Flask项目总结(Python)_第1张图片
上面只是做了一个简单的测试,下面就用具体的网页展示一下:
在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)_第2张图片
到此一个小的基于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 框架入门

你可能感兴趣的:(python)