利用python编写一个网页代码:可以交换数据,输出多个键值对,输入图片
时间: 2024-03-27 08:37:54 浏览: 54
好的,以下是一个更完整的网页代码,可以实现数据交换、多个键值对的输出和图片上传功能:
```html
<!DOCTYPE html>
<html>
<head>
<title>数据交换与图像上传</title>
</head>
<body>
<h1>数据交换与图像上传</h1>
<form method="POST" enctype="multipart/form-data">
<label for="input_data">输入数据:</label>
<input type="text" id="input_data" name="input_data"><br><br>
<h2>输出数据:</h2>
{% if output_data %}
{% for key, value in output_data.items() %}
<p>{{ key }}: {{ value }}</p>
{% endfor %}
{% else %}
<p>暂无数据</p>
{% endif %}
<label for="input_image">上传图片:</label>
<input type="file" id="input_image" name="input_image"><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
这个网页和之前的网页很相似,不同之处在于输出数据的部分。这里使用了 Jinja2 循环语句来输出多个键值对。同时,也修改了表单的 enctype 属性,以支持上传文件。
下面是 Python 代码:
```python
from flask import Flask, render_template, request
from werkzeug.utils import secure_filename
import os
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
input_data = request.form['input_data']
output_data = process_data(input_data)
file = request.files['input_image']
filename = secure_filename(file.filename)
if filename:
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return render_template('index.html', output_data=output_data)
else:
return render_template('index.html')
def process_data(input_data):
# 处理数据的函数,这里返回一个字典
return {'key1': input_data, 'key2': input_data.upper(), 'key3': input_data.lower()}
if __name__ == '__main__':
app.config['UPLOAD_FOLDER'] = 'uploads'
app.run(debug=True)
```
这个代码中,`process_data` 函数返回一个字典,包含了多个键值对。当用户提交表单时,Flask 会调用这个函数来处理数据,并将处理结果传递给模板引擎,最终在网页上显示出来。同时,用户也可以选择上传一张图片,并在服务器端进行保存和处理。这里使用了 Werkzeug 库的 `secure_filename` 函数来确保上传的文件名是安全的。为了支持文件上传,还需要在 Flask 应用中设置一个上传文件的目录。
阅读全文