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

刚来新公司,他们居然说这个很简单?

  •  
  •   rusteer · 2022-10-13 13:14:42 +08:00 · 5947 次点击
    这是一个创建于 780 天前的主题,其中的信息可能已经有所发展或是发生改变。

    某人要求用 python 实现动态生成一个包含 table 的 html ,他给的字典也是不固定的,table 还需要能够根据他的内容动态更改 table 的 style 样式 他说用 python 简单 replace 就可以了......

    30 条回复    2022-10-18 17:24:21 +08:00
    kop1989smurf
        1
    kop1989smurf  
       2022-10-13 13:19:20 +08:00
    不懂 python 。

    手撕一个富文本字符串?
    从楼主的描述上看,确实没什么技术难度,只是随着 table 的复杂程度导致的工作量问题。

    楼主不妨说说具体的技术问题。
    MuscleOf2016
        2
    MuscleOf2016  
       2022-10-13 13:20:13 +08:00
    换个说法,说不是很难,是不是好点。
    rationa1cuzz
        3
    rationa1cuzz  
       2022-10-13 13:20:17 +08:00
    根据动态字典渲染 html 咯,jinja2 了解一下
    tulongtou
        4
    tulongtou  
       2022-10-13 13:20:54 +08:00
    确实挺简单的
    helone
        5
    helone  
       2022-10-13 13:22:22 +08:00
    。。。也有可能你描述的比实际的简单,但是你描述的确实不复杂,最起码对我来说我都懒得去跟产品掰扯,直接去做
    westoy
        6
    westoy  
       2022-10-13 13:27:26 +08:00
    我怎么感觉就是一个模板的活儿啊
    aneureka
        7
    aneureka  
       2022-10-13 13:28:04 +08:00 via iPhone
    定好模板,用 jinja2 动态渲染就行吧
    sutra
        8
    sutra  
       2022-10-13 13:28:16 +08:00
    确实不是很难。
    Richardhtw
        9
    Richardhtw  
       2022-10-13 13:28:41 +08:00
    。。。
    smilenceX
        10
    smilenceX  
       2022-10-13 13:31:13 +08:00
    如果他说了用 python replace 就可以,那是不是可以表示,这个人是懂一些代码的
    不妨再多沟通一下,是不是你把需求想得复杂了
    rusteer
        11
    rusteer  
    OP
       2022-10-13 13:32:01 +08:00
    @kop1989smurf 我不会 python ,没咋学过
    rusteer
        12
    rusteer  
    OP
       2022-10-13 13:33:20 +08:00
    我看了下 jinjia2 可以搞定我想要的,其实就是动态生成一个 html 然后发邮件
    aceseo
        13
    aceseo  
       2022-10-13 15:31:52 +08:00
    真相了,不会 Python , 从零学起肯定难呀
    fgwmlhdkkkw
        14
    fgwmlhdkkkw  
       2022-10-13 15:44:50 +08:00
    什么语言都有模板引擎啊,他说 Python 就必须 Python 吗?
    ingnoscemihi
        15
    ingnoscemihi  
       2022-10-13 17:18:13 +08:00
    不是挺简单的嘛。。。。
    leavic
        16
    leavic  
       2022-10-13 18:25:30 +08:00
    我感觉是不太难啊
    jaredyam
        17
    jaredyam  
       2022-10-13 22:01:56 +08:00
    看起来确实就是写一个 HTML 模板和几行 Python 的事。
    v2eb
        18
    v2eb  
       2022-10-13 22:21:39 +08:00 via Android   ❤️ 1
    我记得刚来公司那会接的第一个需求, 是要求做个照片墙的功能。没有设计稿, 照片数量和大小都未知🙈。幸亏项目黄了
    Tink
        19
    Tink  
       2022-10-13 22:27:47 +08:00 via Android
    只能说很麻烦
    plodderales0o
        20
    plodderales0o  
       2022-10-14 00:03:48 +08:00
    模版引擎都不需要,直接动态生成 table 标签,html 其他部分写死即可。
    rusteer
        21
    rusteer  
    OP
       2022-10-14 09:01:33 +08:00
    @plodderales0o 还需要根据数据进行列的合并与拆分,同时改变 style 样式怎么做?
    rusteer
        22
    rusteer  
    OP
       2022-10-14 09:02:31 +08:00
    @jaredyam 麻烦的是行列不固定,还有进行合并与拆分
    rusteer
        23
    rusteer  
    OP
       2022-10-14 09:03:53 +08:00
    @fgwmlhdkkkw 网络受限,很多东西都没有,python 都是我需要手动下载 whl ,内网拦了的 私有库又没有
    maxbon
        24
    maxbon  
       2022-10-14 09:23:49 +08:00
    我一运维都觉得确实挺简单的
    s0ok
        25
    s0ok  
       2022-10-14 09:31:49 +08:00
    确实不难啊,先考虑考虑是不是自己太菜了
    idblife
        26
    idblife  
       2022-10-14 09:42:25 +08:00 via iPhone
    非常简单啊
    三五分钟的活
    danbai
        27
    danbai  
       2022-10-14 10:08:23 +08:00
    第一个需求,word 转 pdf
    rusteer
        28
    rusteer  
    OP
       2022-10-14 10:40:10 +08:00
    @s0ok 经过 V 友们的提醒(吐槽,我知道怎么搞了) 我被你的头像吸引了
    Pony69
        29
    Pony69  
       2022-10-14 17:21:01 +08:00
    说得挺简单
    rusteer
        30
    rusteer  
    OP
       2022-10-18 17:24:21 +08:00
    尝试了下 因为 key 与 value 都是不固定的,嵌套层级过多了以后 jinja 无法通过循环进行 items()解析,同时因为 json 是 dict 没办法通过下标访问,同时还需要进行行与列的动态合并,先准备用个 jinja 做一个静态的模板。下面是一个比较完整的 jinja template 感觉像个屎山
    ```
    {% extends "base.html" %}
    {% block content %}
    {% for key,value in datas['stage'].items() %}
    <tr height="50">
    <td >{{ key}}</td>
    {% for k,v in value.items() %}
    <td>{{k}}</td>
    {% if k|capitalize|safe =='Report'%}
    <td><a href="{{v}}">FilePath</a></td>
    {% elif k|capitalize|safe !='Detail' %}
    <td colspan="6">{{v}}</td>
    {% elif k|capitalize|safe =='Detail' and v!='none' %}
    {% for v1 in v %}
    <td>
    {{v1}}
    </td>
    {% endfor %}
    {% endif %}
    {% endfor %}
    </tr>
    {% endfor %}
    {% endblock %}
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2593 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 10:52 · PVG 18:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.