4. flask案例: 框架网页查询IP
2025-02-17
创建flask对象
app = Flask(__name__)
# name 是Python中的特殊变量,如果文件作为主程序执行,那么__name__变量的值就是__main__,如果是被其他模块引入,那么__name__的值就是模块名称。编写主程序
# 在主程序中执行run()来启动应用
if __name__ == '__main__':
app.run(debug=True,port=8080)
if __name__ == '__main__':
app.run(host='0.0.0.0') # 允许其他主机进行访问
# 改名启动一个本地服务器,默认情况下其地址是localhost:5000,在上面的代码中,我们使用关键字参数port将监听端口修改为8080。路由
# 使用app变量的route()装饰器来告诉Flask框架URL如何触发我们的视图函数:
@app.route('/')
def hello_world():
return "Hello World"
# 上面的标识,对路径'/'的请求,将转为对hello_world()函数的调用。很直白,对吧?运行
# 整个代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World!"
if __name__ == '__main__':
app.run(debug=True,port=8080)
# 之后运行 app.py
python app.py
# 之后浏览器访问 http://127.0.0.1:8080使用HTML模块
如何将原始的HTMl代码插入FLask应用
from flask import Flask
app = Flask(__name__)
@app.route('/')
def greet():
user = {'username':"Jone","age":"10"}
return '''
<html>
<head>
<title>Templating</title>
<head>
<body>
<h1>Hello,''' + user['username'] + '''!, you’re ''' + user['age'] + ''' years old.</h1>
</body>
</html>'''
if __name__ == '__main__':
app.run(debug=True,port=8080)from flask import Flask, render_template
app = Flask(__name__)
@app.route('/hello')
def hello():
return render_template('index.html', name = 'Alex')
if __name__ == '__main__':
app.run(debug=True)
代码中,模板文件index.html依赖于变量name,其内容如下:
<html>
<body>
{% if name %}
<h2>Hello {{ name }}.</h2>
{% else %}
<h2>Hello.</h2>
{% endif %}
</body>
</html>
在浏览器中访问http://127.0.0.1:8080/hello/alex:完整代码示例
from flask import Flask, render_template, request
import requests
import json
import os
app = Flask(__name__)
#app.jinja_env.variable_start_string = '{{'
#app.jinja_env.variable_end_string = '}}'
@app.route('/', methods=['GET'])
def signin_form():
return '''<form action="/" method="post">
<p><input name="qip"></p >
<p><button type="submit">查询</button></p >
</form>'''
@app.route('/',methods=['POST'])
def query():
ip = request.form.get('qip')
url_base = "http://freeapi.ipip.net/" + ip
result = requests.get(url=url_base)
#result = os.popen('curl http://freeapi.ipip.net/' %ip)
return str(result.json())
if __name__ == "__main__":
app.run(debug=True)