Python全栈:flask快速入门

简介: Python全栈:flask快速入门

参考 : flask快速入门

http://docs.jinkan.org/docs/flask/quickstart.html

项目结构

a4.1.png

├── flask_demo.py   # 项目主文件
├── secret_key.py
├── static          # 静态文件目录
│   └── main.css
└── templates       # 模板文件目录
    ├── hello.html
    ├── login.html
    └── upload.html

代码文件

flask_demo.py

from flask import Flask
from flask import session, redirect, abort, url_for
from flask import request, render_template, make_response
app = Flask(__name__)
# 主页,登陆后显示登录名
@app.route('/')
def index():
    username = session.get("username")
    app.logger.info("index") # 日志
    return "Hello world %s"%username
# 路由参数变量
@app.route("/user/<username>")
def show_username(username):
    return "username:%s"%username
# 参数转换器
@app.route("/id/<int:uid>")
def show_id(uid):
    return "your id:%d"%uid
# post, get请求
@app.route("/username", methods=["POST", "GET"])
def username():
    if request.method == "POST":
        return "post username"
    elif request.method == "GET":
        return "get username"
    else:
        return "none"
# 模板和静态文件
@app.route("/hello/")
@app.route("/hello/<name>")
def hello(name=None):
    return render_template("hello.html", name=name)
# 表单post参数
@app.route("/login/", methods=["GET", "POST"])
def login():
    if request.method == "GET":
        return render_template("login.html")
    elif request.method == "POST":
        username = request.form.get("username")
        password = request.form.get("password")
        # session会话
        session["username"] = username
        return redirect(url_for("index"))
        # return "username:%s, password:%s"%(username, password)
# 退出登录
@app.route("/logout/")
def logout():
    session.pop("username", None)
    return redirect(url_for("index"))
# 推荐 get参数:http://127.0.0.1:5000/page/?num=4
@app.route("/page/")
def page():
    page_num = request.args.get("num")
    return "num:%s"%page_num
# 文件上传
@app.route("/upload/", methods=["GET", "POST"])
def upload_file():
    if request.method == "GET":
        return render_template("upload.html")
    elif request.method == "POST":
        file = request.files.get("upload-file")
        print(file.filename)
        file.save(file.filename)
        return "文件上传成功"
# 读取存贮 cookies
@app.route("/cookie/")
def cookie():
    username = request.cookies.get("username")
    print(username)
    response = make_response("访问cookie")
    if not username:
        response.set_cookie("username", "mouday")
    return response
# 404 与重定向
@app.route("/notpage1/")
def notpage1():
    return redirect(url_for("notpage2"))
@app.route("/notpage2/")
def notpage2():
    abort(401)
# 404页面
@app.errorhandler(404)
def not_find_page(error):
    return "<h1>404</h1>", 404
app.secret_key = r"\xedz\xdf\x1c\xd2\xa7\xdff:6\xef\xf2\x95mL\x18TF\r\x00LM\xec\xa9"
if __name__ == "__main__":
    # 监听所有公网 IP, 开启调试模式
    app.run(host='0.0.0.0', debug=True)

secret_key.py

# 可用于生成 secret_key
import os
print(os.urandom(24))
# b'\xedz\xdf\x1c\xd2\xa7\xdff:6\xef\xf2\x95mL\x18TF\r\x00LM\xec\xa9'

main.css

body{
    background-color: darkgreen;
}

hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="/static/main.css" rel="stylesheet" type="text/css" />
</head>
    <body>
        <h1>hello world</h1>
        {% if name %}
            <h2>{{ name }}</h2>
        {% else %}
            <h2>没有名字</h2>
        {% endif %}
    </body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login/" method="post">
    <input type="text" name="username">
    <input type="text" name="password">
    <input type="submit">
</form>
</body>
</html>

upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/upload/" method="post" enctype="multipart/form-data">
    <input type="file" name="upload-file">
    <input type="submit">
</form>
</body>
</html>


相关文章
|
4月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
476 77
|
3月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
100 1
|
4月前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
198 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
8月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
10月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
553 3
|
10月前
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
196 2
|
10月前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
454 2
|
10月前
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
10月前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
585 2
|
3月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
207 33

推荐镜像

更多