V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qanniu
V2EX  ›  问与答

请教大家,业余需求需要做个输入界面, Python web 框架哪个最简单上手?

  •  
  •   qanniu · 2020-11-26 17:25:34 +08:00 · 2835 次点击
    这是一个创建于 1465 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1. 背景说明

    如题,小弟做芯片设计的,有些字符串(其实是寄存器)需要用 python 处理,洗一洗数据。 需要写一些小程序给组内用,但大家都不怎么安装 python 还有各种包。 pyinstall 的话打包个 window 界面起步 50M 。

    2. 需求

    **故打算弄个 web 界面,只需要作为 avgv 的可视输入即可。 ** 请教大家哪个好用。

    3. 目前的选择

    目前看的是 web.py, 不满意的地方:

    1. 界面简单,不知怎么用 css 美好,大家有套 css 的 demo 吗?
    2. 能能简单的框架吗,哈哈
    第 1 条附言  ·  2020-11-27 08:31:22 +08:00
    目前 dash VS FastAPI
    还没想好用哪个。
    dash 做图表似乎更简单?
    36 条回复    2020-11-27 10:14:56 +08:00
    jayzau1973
        1
    jayzau1973  
       2020-11-26 17:28:30 +08:00
    flask
    balabalaguguji
        2
    balabalaguguji  
       2020-11-26 17:31:46 +08:00
    balabalaguguji
        3
    balabalaguguji  
       2020-11-26 17:32:04 +08:00
    hushao
        4
    hushao  
       2020-11-26 17:37:58 +08:00
    只有 windows 的话,易语言吧,需要 python 处理的话,调用一下 python 就行。易语言写界面
    jworg
        5
    jworg  
       2020-11-26 17:42:51 +08:00
    说实话这样子,更建议搞个 linux 的机器开 ssh,每个人登上去跑,sz 拖数据过去跑,rz 取回来,简单的获取输入 /界面 /打印 cli 足以胜任,复杂的你用 web 也搞不定。搞芯片应该都对 linux 比较熟悉
    zjb861107
        6
    zjb861107  
       2020-11-26 17:53:12 +08:00   ❤️ 2
    fastapi,带交互式 API 文档,可以当界面用
    cdlnls
        7
    cdlnls  
       2020-11-26 17:53:39 +08:00 via Android
    弄个 flask 当后台,然后写个 html 模板,模板上只要加一个输入框,一个提交按钮,不要求美观的话,最多 15 分钟就能做好。
    ClutchBear
        8
    ClutchBear  
       2020-11-26 18:01:47 +08:00
    后端用 flask, 几十行代码, jinja 模板

    css 的花, 建议用 bootstrap, 一个 css 引入就行.
    <link href="//cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css" rel="stylesheet">
    类似这样
    codepark
        9
    codepark  
       2020-11-26 18:33:03 +08:00
    flask admin
    Jackeriss
        10
    Jackeriss  
       2020-11-26 18:41:21 +08:00 via iPhone
    推荐做网页,桌面程序比网页复杂一些,而且还需要打包,坑比较多。推荐 FastAPI 或者 tornado
    BingoXuan
        11
    BingoXuan  
       2020-11-26 18:52:34 +08:00 via Android
    pywebview
    cmdOptionKana
        12
    cmdOptionKana  
       2020-11-26 18:55:16 +08:00
    不管你用哪个 Python web 框架,都是后端,管不了前端网页的美观,web 界面要另外再找东西来弄,比如用 bootstrap
    qanniu
        13
    qanniu  
    OP
       2020-11-26 19:14:33 +08:00
    @jworg 丢人,不要高看做芯片的,以为都都知道 sz rz 一套指令
    qanniu
        14
    qanniu  
    OP
       2020-11-26 19:17:20 +08:00
    @zjb861107 新知识 get
    Cbdy
        15
    Cbdy  
       2020-11-26 19:25:38 +08:00
    你这个需求,根本不需要用 python,直接纯前端写个 html 就能搞定了
    qanniu
        16
    qanniu  
    OP
       2020-11-26 19:42:30 +08:00
    @Cbdy 哎,隔行如隔山。
    比如我们经常上,就写个高通的 sensor 驱动,是个🐖就会。
    imn1
        17
    imn1  
       2020-11-26 19:46:28 +08:00
    @Cbdy #15 +1
    能 send 到你机器的监听接口就行了,不需要 py,除非你接收后必须 py 处理一遍
    qanniu
        18
    qanniu  
    OP
       2020-11-26 19:59:31 +08:00
    @zjb861107 谢谢,fastapi 看来半小时文档,很酷,似乎就是我要的东西。


    @imn1 当然要 py 一下了。很多逻辑 html 不好做(bu hui zuo)
    JinTianYi456
        19
    JinTianYi456  
       2020-11-26 20:13:52 +08:00
    @jayzau1973 #1 `Do not use run() in a production setting.` 那应该怎么用?
    sunmker
        20
    sunmker  
       2020-11-26 20:17:05 +08:00
    不难的话,直接 html,用 js 处理
    Cyanhall
        21
    Cyanhall  
       2020-11-26 20:52:53 +08:00   ❤️ 1
    FastAPI 在一众成名已久的框架中再流行起来,值得一试

    参考 - 最流行的 Python Web 框架: https://www.cyanhall.com/cn/top/python-web-framework/
    lithbitren
        22
    lithbitren  
       2020-11-26 21:54:33 +08:00   ❤️ 2
    找个文件夹直接建一个 index.html,然后在 index.html 的文件夹里的地址栏里输入 cmd 开终端,然后输入`python -m http.server 80`,然后就内网就可以通过 192.168.0.XXX/127.0.0.1 可以访问你的机子这个目录的 index.html 了。

    如果可以的话,直接在 index.html 直接写逻辑就完事了,如果实在不会写 js,就在该文件夹建立一个 cgi-bin 文件夹及内部再建立一个 clean.py 的文件,可以通过浏览器的首页访问也可以直接通过`127.0.0.1/cgi-bin/clean.py?input=转换内容`来执行 python 脚本。

    目录结构:
    --index.html
    --cgi-bin
    ----clean.py

    ```index.html
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <textarea id=input_data placeholder=输入></textarea>
    <div><button type=button onclick='exec_in_py.location.href = "cgi-bin/helloworld.py?input=" + document.getElementById("input_data").value'>洗数据</button>
    </div>
    <iframe name=exec_in_py></iframe>
    ```

    ```cgi-bin/clean.py
    import cgi

    print('Content-Type: text/plain\n')

    # 获取输入值
    inp = cgi.FieldStorage()['input'].value

    # py 写清洗数据的逻辑,只要改这里就得了
    inp += '\nby_py'

    # 输出到页面
    print(inp)
    ```

    更复杂的还是上框架吧
    lithbitren
        23
    lithbitren  
       2020-11-26 21:57:53 +08:00
    命令行运行的是`python -m http.server --cgi 80`,ls 命令写错了,少了--cgi
    volvo007
        24
    volvo007  
       2020-11-26 22:01:58 +08:00
    强烈推荐 flask
    https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
    看这篇非常详细的教程,b 站有带班的中文授课视频

    对于入门用户,比较难和有价值的一般是表单提交和登录管理,这个都有相应模块和对应的章节,对着敲几遍应该就能搞定了

    css 的话,比较推荐引入 flask-bootstrap 模块,直接实例化 app 页面,这样维护方便一些
    ClericPy
        25
    ClericPy  
       2020-11-26 22:58:00 +08:00
    5 年前推荐 bottle, 5 年后依然 bottle

    平时不怎么纠结性能, 用个简单的方式就能绑定多线程或者 gevent 协程的 server
    qibing2000
        26
    qibing2000  
       2020-11-26 23:03:47 +08:00 via iPhone   ❤️ 1
    @qanniu 那楼主可以出篇博文吗,就叫“交🐷写驱动”,😂
    renmu123
        27
    renmu123  
       2020-11-27 00:14:52 +08:00 via Android
    没有基础推荐直接写个命令行,这种场景对安装包软件大小并不敏感
    levelworm
        28
    levelworm  
       2020-11-27 00:40:37 +08:00 via Android
    @cmdOptionKana python 也可以搞前端,dash
    muzuiget
        29
    muzuiget  
       2020-11-27 06:07:58 +08:00
    小程序直接用 Python 自带的 tkinter 不就好了。
    qanniu
        30
    qanniu  
    OP
       2020-11-27 08:20:50 +08:00
    @lithbitren 辛苦辛苦,我自己都懒得这么细心回答别人呢。
    感谢。fastapi 我先试用几天,您的方案备用。
    qanniu
        31
    qanniu  
    OP
       2020-11-27 08:24:41 +08:00
    @qibing2000 其实表面看就几行 code 搞定,冰山之下是数月到数年的背景基础知识积累。
    这些基础知识一些同事们总是想当然的觉得是人就天生就懂的。
    古人把这种现象简称隔行如隔山

    --- 换行业有感。
    qanniu
        32
    qanniu  
    OP
       2020-11-27 08:30:37 +08:00   ❤️ 1
    @levelworm dash 这家伙和 jupyter 很像啊,似乎也很香,我有点变心了哈哈。
    目前 dash VS FastAPI
    还没想好。
    jayzau1973
        33
    jayzau1973  
       2020-11-27 09:53:55 +08:00
    @JinTianYi456 自己写的小工具我都是直接 run 的
    TrickWu
        34
    TrickWu  
       2020-11-27 10:01:01 +08:00
    flask 简单
    coolair
        35
    coolair  
       2020-11-27 10:05:13 +08:00
    用 Django,自带 admin,换个皮肤,还挺好看。
    daimiaopeng
        36
    daimiaopeng  
       2020-11-27 10:14:56 +08:00
    flask
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:45 · PVG 07:45 · LAX 15:45 · JFK 18:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.