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

flask 伪静态的问题

  •  
  •   wework · 2020-04-27 22:00:06 +08:00 · 1209 次点击
    这是一个创建于 1681 天前的主题,其中的信息可能已经有所发展或是发生改变。
    hu.is 目前这个网站用的 flask 框架,目前只有一个路由入口 ("/") 以及唯一模板 /templates/index.html,现在查询域名的时候,只能通过表单提交,通过 ajax 请求返回数据渲染到首页

    我希望通过 hu.is/xxx.com 这样的伪静态访问方式,然后加载 /templates/index.html,同时发起 ajax 请求返回数据。

    我是第一次用 flask 做这种 web 应用,不知到这种伪静态访问在 flask 这里是怎么实现的,请给点提示哇,谢谢各位
    第 1 条附言  ·  2020-04-27 22:34:32 +08:00
    刚刚看了一下 flask 得模板系统,通过向模板传参,然后触发 ajax 提交这个参数到后台,实现了这个效果...不知道这个做法是不是可靠的

    很蛋疼的是,我这个 flask 应用,那个静态资源 css js 改了以后,很久才生效,ctrl +f5 删了浏览器缓存,删了 cf 缓存,以及 重启 flask 也不行...
    2 条回复    2020-04-28 06:20:14 +08:00
    gwy15
        1
    gwy15  
       2020-04-27 23:00:53 +08:00
    flask 的 jinja2 引擎是服务器端渲染的那种,先拉 html 回来再 ajax 会多一个 RTT,也不太利于 SEO 。

    服务器渲染的话,可以这么做:

    @route('')
    def index():
    return render_template('.html', domain=None, detail='')

    @route('/<string:domain>')
    def direct_query(domain):
    return render_template('.html', domain=domain, detail=internal_api(domain))

    模板里面判断 domain 是否是 None,生成 DOM 就可以了。

    如果要按你说的,先“伪静态”(楼主原来写 php 的? XD )再 ajax,那直接把成品 index.html 丢给 flask 的 static 处理,js 里面解析 url 就行了,甚至没必要渲染模板。

    或者直接上前端框架( vue 、etc.),flask 只负责 ajax 就行了。
    wework
        2
    wework  
    OP
       2020-04-28 06:20:14 +08:00
    @gwy15 谢谢你的回答,那么多年都是玩 PHP 的,开始搞 flask 这种,一下子接受不了,确实需要更多时间消化
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1258 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:29 · PVG 07:29 · LAX 15:29 · JFK 18:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.