flask框架制作前端网页作为GUI

本文详细介绍了Flask应用的基本结构,包括文件目录、必备文件、路由配置以及一个简单的文件上传功能实现案例。通过创建app.py、静态文件夹、模板和处理POST请求,展示了如何用Flask构建一个基础的web应用。
摘要由CSDN通过智能技术生成

一、语法和原理

(一)、文件目录结构

需要注意的问题:启动文件命名必须是app.py。

一个典型的Flask应用通常包含以下几个基本文件和文件夹:

app.py:应用的入口文件,包含了应用的初始化和配置。
requirements.txt:应用所依赖的Python包列表。可以使用该文件来管理应用的依赖关系。
README.md:应用的说明文档,包含了应用的运行方法、配置说明等。
venv/:虚拟环境文件夹,用于隔离应用的Python环境。
除了上述基本文件和文件夹外,应用的根目录还可以包含其他一些文件,例如:

static/:静态文件目录,用于存放应用所需的静态资源,如CSS样式表、JavaScript文件、图片等。
templates/:模板文件目录,用于存放应用的HTML模板文件。Flask使用Jinja2作为模板引擎,可以通过模板文件生成动态的HTML页面。

app/
├── __init__.py
├── routes.py
├── models.py
├── forms.py
├── helpers.py
├── static/
│   ├── css/
│   ├── js/
│   └── images/
└── templates/
    └── base.html
    └── index.html
    └── ...

二、案例

(一)、目录结构如下:

在这里插入图片描述

(二)、功能与代码

读取文件到app文件夹下并将文件名写入对应的txt文件(现代浏览器不允许获取本地路径),后续通过读入txt的文件名来拼接路径,读取app文件夹下的文件。

步骤:

1、创建主页面

创建一个名为templates的目录,并在其中创建一个名为index.html的文件。将以下HTML代码粘贴到该文件中:

将url_for()函数指向的URL临时替换为了#。在实际项目中,请根据你的路由配置重新添加对应的URL路径。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <!-- 添加CSS样式 -->
    <style>
        /* 定义一个包含链接的容器,使其居中并分散布局 */
        .link-container {
            display: flex;
            justify-content: space-between; /* 使链接在容器内水平分散 */
            align-items: center; /* 使链接垂直居中 */
            width: 100%;
            max-width: 600px; /* 设置最大宽度以适应不同屏幕尺寸 */
            margin: 0 auto; /* 在页面中央对齐容器 */
            padding: 20px 0; /* 上下增加间距 */
        }

        /* 定义链接的基本样式 */
        .link-item {
            padding: 10px 15px; /* 内边距,提供点击区域 */
            border-radius: 4px; /* 圆角效果 */
            text-decoration: none; /* 去除默认下划线 */
            color: white; /* 文字颜色 */
            font-weight: bold; /* 加粗字体 */
            transition: background-color 0.3s ease; /* 添加平滑背景色过渡效果 */
        }

        /* 分别为三个链接设置不同的背景颜色 */
        .link-item.load-model {
            background-color: #e74c3c; /* 红色 */
        }

        .link-item.input-action {
            background-color: #2ecc71; /* 绿色 */
        }

        .link-item.output-action {
            background-color: #3498db; /* 蓝色 */
        }
    </style>

    <title>App Title</title>
</head>
<body>
    
    <!-- 创建一个包含三个链接的 Flexbox 容器 -->
    <div class="link-container">
        <!-- 第一个链接,指向 'load_model' 页面 -->
        <a href="#" class="link-item load-model">加载模型</a>
        
        <!-- 第二个链接,指向 'input' 页面 -->
        <a href="#" class="link-item input-action">输入</a>
        
        <!-- 第三个链接,指向 'output' 页面 -->
        <a href="#" class="link-item output-action">输出</a>
    </div>

    <!-- Jinja2 模板中的内容块(已移除 Flask 相关内容) -->
    <!-- {% block content %}{% endblock %} -->
</body>
</html>
2、创建二级页面

在二级页面中实现文件的上传功能。

在templates目录中创建三个子目录:load_model, input, 和 output。
在每个子目录中创建一个名为form.html的文件,并将以下HTML代码粘贴到每个文件中:

<form method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">提交</button>
</form>
3、后端处理

通过Python路由函数实现数据的读取和文件名写入txt

更新的app.py以处理这些表单。将以下python代码添加到app.py文件中:

from flask import Flask, render_template, request
import os

app = Flask(__name__)
model_file = 'model_name.txt'
input_file = 'input.txt'
output_file = 'output.txt'


@app.route('/')
def index():
    return render_template('index.html')

@app.route('/load_model', methods=['GET', 'POST'])
def load_model():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            filename = file.filename
            file.save(os.path.join(app.root_path, filename))
            print(f"模型已加载:{filename}")
            # 名称写入txt文档
            with open(model_file, 'w') as f:
                f.write(filename)
    return render_template('load_model/form.html')

@app.route('/input', methods=['GET', 'POST'])
def input():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            filename = file.filename
            file.save(os.path.join(app.root_path, 'input'))
            print(f"输入文件已上传:{filename}")
            # 名称写入txt文档
            with open(model_file, 'w') as f:
                f.write(filename)
    return render_template('input/form.html')

@app.route('/output', methods=['GET', 'POST'])
def output():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            filename = file.filename
            file.save(os.path.join(app.root_path, 'output'))
            print(f"输出文件已上传:{filename}")
    return render_template('output/form.html')

if __name__ == '__main__':
    app.run(debug=True)

运行python app.py时,应用程序将在http://localhost:5000上启动。您将看到一个包含三个按钮的页面,每个按钮都链接到一个表单,用于上传本地文件。点击每个按钮将打开一个新的页面,其中包含一个文件上传表单。提交表单后,文件将被保存到相应的目录中。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我可以提供建议,但不能实际编写登录页面。Flask是一个Python框架,您可以使用它来开发Web应用程序,并且它可以帮助您编写登录页面。您需要创建一个HTML表单,并使用Flask提供的API来处理用户提交的表单数据。 ### 回答2: 使用Flask框架编写登陆页面可以实现一个简单的用户认证功能。下面是一个基本的示例代码: ``` from flask import Flask, request, render_template, redirect app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def login(): if request.method == 'POST': # 获取表单中提交的用户名和密码 username = request.form.get('username') password = request.form.get('password') # 验证用户名和密码是否正确 if username == 'admin' and password == '123456': # 登录成功,重定向到首页或其他需要登录的页面 return redirect('/home') else: # 登录失败,返回登录页面并显示错误提示信息 return render_template('login.html', error='用户名或密码错误') # 显示登录页面 return render_template('login.html') @app.route('/home') def home(): return "<h1>Welcome to the home page!</h1>" if __name__ == '__main__': app.run(debug=True) ``` 在上述代码中,使用Flask提供的装饰器`@app.route`用于定义路由,`/`表示登陆页面的URL。当使用GET方法访问该URL时,会显示登陆页面;当使用POST方法提交表单时,会获取用户名和密码,并进行验证。如果验证通过,则重定向到首页`/home`,如果验证失败则返回登陆页面并显示错误提示信息。 在`login.html`模板文件中,可以使用HTML和模板引擎语法来渲染页面和动态显示错误信息。 这只是一个简单的示例,实际的登陆页面可能还需要添加其它功能,如记住密码、密码加密等,可以根据实际需求进行扩展。 ### 回答3: 使用flask框架编写一个登陆页面非常简单。下面是一个示例: 首先,需要安装Flask框架。可以使用以下命令在终端中安装: ```shell pip install flask ``` 接下来,创建一个名为`app.py`的文件,并导入Flask模块和相关的模块: ```python from flask import Flask, render_template, request app = Flask(__name__) ``` 然后,定义一个路由,用于处理登陆页面的GET和POST请求: ```python @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': # 处理用户提交的表单数据 username = request.form.get('username') password = request.form.get('password') # 进行登陆验证逻辑 if username == 'admin' and password == '123456': return '登陆成功' else: return '用户名或密码错误' # 返回登陆页面 return render_template('login.html') ``` 注意,在上面的代码中,我们使用了`render_template`函数来渲染一个名为`login.html`的模板文件。确保在同级目录下创建名为`templates`的文件夹,并在其中创建`login.html`文件,用于展示登陆页面的HTML代码。可以在其中添加一个表单,以便用户输入用户名和密码。 最后,添加以下代码以启动Flask应用: ```python if __name__ == '__main__': app.run() ``` 保存并运行`app.py`,然后打开浏览器,在地址栏中输入`http://localhost:5000/login`,即可访问登陆页面。 这只是一个简单的示例,实际的登陆页面可能会更复杂,需要进行更多的验证和逻辑处理。但是,使用Flask框架可以方便地构建一个完整的登陆页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风暴之零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值