登录
首页 >  文章 >  前端

HTML数据传到Flask的几种实用方法

时间:2025-08-25 13:07:34 162浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《HTML数据传到Flask的实用方法》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

将HTML中的变量数据传递到Flask

将HTML中的变量数据传递到Flask

在Web开发中,经常需要将前端HTML页面中的数据传递到后端Flask应用进行处理。如果这些数据是静态的,可以直接在Jinja模板中构建URL。但如果数据是动态的,例如来自JavaScript变量,则需要结合Jinja和JavaScript来实现。

问题:为什么直接在Jinja模板中使用JavaScript变量行不通?

Jinja模板引擎在服务器端渲染HTML页面时,会将{{ ... }}中的内容替换为相应的值。当你在Jinja模板中使用JavaScript变量时,例如'{{ url_for( "move_forward" , title=data) }}',Flask/Jinja并不知道data是什么,因为它无法与JavaScript交互。Jinja只是尝试替换一个字符串,而data变量的值只存在于客户端的JavaScript环境中。

解决方案:结合Jinja和JavaScript动态构建URL

要解决这个问题,可以将URL的基本部分使用Jinja生成,然后使用JavaScript将变量值添加到URL中。

以下是一个示例:

代码解释:

  1. var baseUrl = '{{ url_for("move_forward") }}';: 这行代码使用Jinja的url_for函数生成move_forward路由的基本URL。url_for函数会根据Flask应用中的路由配置生成正确的URL,例如/move_forward。这个URL是在服务器端生成的,并且会嵌入到HTML页面中。
  2. var data = "shan";: 这行代码定义了一个JavaScript变量data,并赋值为"shan"。这可以是任何动态生成的值,例如用户输入或从其他JavaScript函数获取的值。
  3. window.location.href = baseUrl + "/" + data;: 这行代码使用JavaScript将基本URL和变量data的值拼接在一起,然后将window.location.href设置为新的URL。这会导致浏览器重定向到新的URL,并将data的值作为参数传递给Flask路由。

Flask后端代码:

from flask import Flask

app = Flask(__name__)

@app.route("/move_forward/")
def move_forward(title):
    print(title)
    return f"Received title: {title}"

if __name__ == '__main__':
    app.run(debug=True)</pre><p><strong>代码解释:</strong></p><ol><li><strong>@app.route("/move_forward/<title>")</strong>:  这行代码定义了一个Flask路由,它接受一个名为title的参数。<title>表示URL中的一个变量部分,Flask会将这部分的值传递给move_forward函数。</li><li><strong>def move_forward(title):</strong>:  这行代码定义了处理move_forward路由的函数。该函数接受一个名为title的参数,该参数的值是从URL中提取的。</li><li><strong>print(title)</strong>:  这行代码将title的值打印到控制台,以便你可以看到Flask接收到的值。</li><li><strong>return f"Received title: {title}"</strong>: 这行代码返回一个包含接收到的title的字符串,并在浏览器中显示。</li></ol><p><strong>注意事项:</strong></p><ul><li>确保Flask路由中的参数名称与JavaScript代码中传递的参数名称匹配。</li><li>如果需要传递多个变量,可以使用&符号将它们连接在一起,例如baseUrl + "/" + data1 + "¶m2=" + data2。</li><li>考虑对传递的数据进行URL编码,以确保特殊字符能够正确传递。可以使用JavaScript的encodeURIComponent()函数进行编码。</li><li>如果需要传递大量数据,或者数据比较复杂,可以考虑使用POST请求,并将数据作为请求体发送。</li></ul><p><strong>总结:</strong></p><p>通过结合Jinja模板和JavaScript,可以灵活地将HTML页面中的变量数据传递到Flask后端。这种方法允许动态构建URL,并将变量值作为参数传递给Flask路由,从而实现更复杂的Web应用功能。 记住,Jinja在服务器端运行,而JavaScript在客户端运行,理解这一点对于正确地将两者结合使用至关重要。</p><p>终于介绍完啦!小伙伴们,这篇关于《HTML数据传到Flask的几种实用方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!</p>      </div>
        <div class="labsList">
                    </div>
          </div>

         <!-- 最新阅读 -->
     <div class="contBoxNor">
      <div class="contTit">
        <div class="tit">相关阅读</div>
        <a href="/articlelist.html" class="more">更多></a>
      </div>
      <ul class="latestReadList">
                <li>
          <div class="info">
                                  <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                          |  1年前  |  
                                       <a href="javascript:;" class="aLightGray" title="CSS">CSS</a>
                                                 <a href="javascript:;" class="aLightGray" title="优化">优化</a>
                                                 <a href="javascript:;" class="aLightGray" title="体验">体验</a>
                      </div>
          <div class="tit lineOverflow"><a href="/article/72840.html"  title="优化用户界面体验的秘密武器:CSS开发项目经验大揭秘" class="aBlack">优化用户界面体验的秘密武器:CSS开发项目经验大揭秘</a></div>
          <div class="opt">
            <span><i class="view"></i>501</span>
            <span class="collectBtn user_collection" data-id="72840" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
          </div>
        </li>
                <li>
          <div class="info">
                                  <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                          |  1年前  |  
                                       <a href="javascript:;" class="aLightGray" title="图片轮播">图片轮播</a>
                                                 <a href="javascript:;" class="aLightGray" title="微信小程序">微信小程序</a>
                                                 <a href="javascript:;" class="aLightGray" title="特效">特效</a>
                      </div>
          <div class="tit lineOverflow"><a href="/article/76259.html"  title="使用微信小程序实现图片轮播特效" class="aBlack">使用微信小程序实现图片轮播特效</a></div>
          <div class="opt">
            <span><i class="view"></i>501</span>
            <span class="collectBtn user_collection" data-id="76259" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
          </div>
        </li>
                <li>
          <div class="info">
                                  <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                          |  1年前  |  
                                       <a href="javascript:;" class="aLightGray" title="sessionStorage">sessionStorage</a>
                                                 <a href="javascript:;" class="aLightGray" title="存储能力">存储能力</a>
                                                 <a href="javascript:;" class="aLightGray" title="限制解析">限制解析</a>
                      </div>
          <div class="tit lineOverflow"><a href="/article/83771.html"  title="解析sessionStorage的存储能力与限制" class="aBlack">解析sessionStorage的存储能力与限制</a></div>
          <div class="opt">
            <span><i class="view"></i>501</span>
            <span class="collectBtn user_collection" data-id="83771" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
          </div>
        </li>
                <li>
          <div class="info">
                                  <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                          |  1年前  |  
                                       <a href="javascript:;" class="aLightGray" title="团队合作">团队合作</a>
                                                 <a href="javascript:;" class="aLightGray" title="冒泡事件">冒泡事件</a>
                                                 <a href="javascript:;" class="aLightGray" title="促进作用">促进作用</a>
                      </div>
          <div class="tit lineOverflow"><a href="/article/85057.html"  title="探索冒泡活动对于团队合作的推动力" class="aBlack">探索冒泡活动对于团队合作的推动力</a></div>
          <div class="opt">
            <span><i class="view"></i>501</span>
            <span class="collectBtn user_collection" data-id="85057" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
          </div>
        </li>
                <li>
          <div class="info">
                                  <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                          |  1年前  |  
            </div>
          <div class="tit lineOverflow"><a href="/article/91359.html"  title="UI设计中为何选择绝对定位的智慧之道" class="aBlack">UI设计中为何选择绝对定位的智慧之道</a></div>
          <div class="opt">
            <span><i class="view"></i>501</span>
            <span class="collectBtn user_collection" data-id="91359" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
          </div>
        </li>
              </ul>
    </div>
         <!-- 最新阅读 -->
      <div class="contBoxNor">
          <div class="contTit">
              <div class="tit">最新阅读</div>
              <a href="/articlelist.html" class="more">更多></a>
          </div>
          <ul class="latestReadList">
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  1秒前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297569.html"  title="datalist标签使用教程:输入框预定义选项设置方法" class="aBlack">datalist标签使用教程:输入框预定义选项设置方法</a></div>
                  <div class="opt">
                      <span><i class="view"></i>493</span>
                      <span class="collectBtn user_collection" data-id="297569" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  10分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297560.html"  title="JavaScript扫雷游戏开发实战教程" class="aBlack">JavaScript扫雷游戏开发实战教程</a></div>
                  <div class="opt">
                      <span><i class="view"></i>347</span>
                      <span class="collectBtn user_collection" data-id="297560" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  15分钟前  |  
                                            <a href="javascript:;" class="aLightGray" title="FLEXBOX">FLEXBOX</a>
                                            <a href="javascript:;" class="aLightGray" title="侧边栏">侧边栏</a>
                                            <a href="javascript:;" class="aLightGray" title="CSSGrid">CSSGrid</a>
                                            <a href="javascript:;" class="aLightGray" title="calc()">calc()</a>
                                            <a href="javascript:;" class="aLightGray" title="高度自适应">高度自适应</a>
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297555.html"  title="CSS固定侧边栏自适应高度技巧" class="aBlack">CSS固定侧边栏自适应高度技巧</a></div>
                  <div class="opt">
                      <span><i class="view"></i>424</span>
                      <span class="collectBtn user_collection" data-id="297555" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  26分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297545.html"  title="HTML中标签的两种绑定方式" class="aBlack">HTML中标签的两种绑定方式</a></div>
                  <div class="opt">
                      <span><i class="view"></i>480</span>
                      <span class="collectBtn user_collection" data-id="297545" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  31分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297540.html"  title="Angular组件通信:共享服务与ViewChild实用解析" class="aBlack">Angular组件通信:共享服务与ViewChild实用解析</a></div>
                  <div class="opt">
                      <span><i class="view"></i>100</span>
                      <span class="collectBtn user_collection" data-id="297540" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  37分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297535.html"  title="HTML转XML技巧分享" class="aBlack">HTML转XML技巧分享</a></div>
                  <div class="opt">
                      <span><i class="view"></i>352</span>
                      <span class="collectBtn user_collection" data-id="297535" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  40分钟前  |  
                                            <a href="javascript:;" class="aLightGray" title="性能优化">性能优化</a>
                                            <a href="javascript:;" class="aLightGray" title="CSS动画">CSS动画</a>
                                            <a href="javascript:;" class="aLightGray" title="动画库">动画库</a>
                                            <a href="javascript:;" class="aLightGray" title="requestAnimationFrame">requestAnimationFrame</a>
                                            <a href="javascript:;" class="aLightGray" title="JS动画">JS动画</a>
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297532.html"  title="JS动画实现技巧全解析" class="aBlack">JS动画实现技巧全解析</a></div>
                  <div class="opt">
                      <span><i class="view"></i>430</span>
                      <span class="collectBtn user_collection" data-id="297532" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  43分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297530.html"  title="JS创建弹窗方法全解析" class="aBlack">JS创建弹窗方法全解析</a></div>
                  <div class="opt">
                      <span><i class="view"></i>165</span>
                      <span class="collectBtn user_collection" data-id="297530" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  50分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297523.html"  title="地理位置是什么?GeolocationAPI详解" class="aBlack">地理位置是什么?GeolocationAPI详解</a></div>
                  <div class="opt">
                      <span><i class="view"></i>475</span>
                      <span class="collectBtn user_collection" data-id="297523" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  58分钟前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297515.html"  title="HTML文本描边动画实现技巧" class="aBlack">HTML文本描边动画实现技巧</a></div>
                  <div class="opt">
                      <span><i class="view"></i>309</span>
                      <span class="collectBtn user_collection" data-id="297515" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  1小时前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297512.html"  title="CSS伪元素内容插入方法解析" class="aBlack">CSS伪元素内容插入方法解析</a></div>
                  <div class="opt">
                      <span><i class="view"></i>187</span>
                      <span class="collectBtn user_collection" data-id="297512" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                            <li>
                  <div class="info">
                                            <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> ·
                                            <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>
                                              |  1小时前  |  
                      </div>
                  <div class="tit lineOverflow"><a href="/article/297510.html"  title="HTML锚点链接设置方法详解" class="aBlack">HTML锚点链接设置方法详解</a></div>
                  <div class="opt">
                      <span><i class="view"></i>140</span>
                      <span class="collectBtn user_collection" data-id="297510" data-type="article" title="收藏"><i class="collect"></i>收藏</span>
                  </div>
              </li>
                        </ul>
      </div>
    <!-- 课程推荐 -->
    <div class="contBoxNor">
      <div class="contTit">
        <div class="tit">课程推荐</div>
        <a href="/courselist.html" class="more">更多></a>
      </div>
      <ul class="classRecomList">
                <li>
          <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="img_box">
            <img src="/uploads/20221222/52fd0f23a454c71029c2c72d206ed815.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="前端进阶之JavaScript设计模式">
                      </a>
          <dl>
            <dt class="lineOverflow">
              前端进阶之JavaScript设计模式            </dt>
            <dd class="cont1 lineOverflow">设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。</dd>
            <dd class="cont2">
              <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="toStudy">立即学习</a>
              <span>542次学习</span>
            </dd>
          </dl>
        </li>
                <li>
          <a href="/course/2.html" title="GO语言核心编程课程" class="img_box">
            <img src="/uploads/20221221/634ad7404159bfefc6a54a564d437b5f.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="GO语言核心编程课程">
                      </a>
          <dl>
            <dt class="lineOverflow">
              GO语言核心编程课程            </dt>
            <dd class="cont1 lineOverflow">本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。</dd>
            <dd class="cont2">
              <a href="/course/2.html" title="GO语言核心编程课程" class="toStudy">立即学习</a>
              <span>511次学习</span>
            </dd>
          </dl>
        </li>
                <li>
          <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="img_box">
            <img src="/uploads/20240103/bad35fe14edbd214bee16f88343ac57c.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="简单聊聊mysql8与网络通信">
                      </a>
          <dl>
            <dt class="lineOverflow">
              简单聊聊mysql8与网络通信            </dt>
            <dd class="cont1 lineOverflow">如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让</dd>
            <dd class="cont2">
              <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="toStudy">立即学习</a>
              <span>498次学习</span>
            </dd>
          </dl>
        </li>
                <li>
          <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="img_box">
            <img src="/uploads/20221226/bbe4083bb3cb0dd135fb02c31c3785fb.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="JavaScript正则表达式基础与实战">
                      </a>
          <dl>
            <dt class="lineOverflow">
              JavaScript正则表达式基础与实战            </dt>
            <dd class="cont1 lineOverflow">在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。</dd>
            <dd class="cont2">
              <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="toStudy">立即学习</a>
              <span>487次学习</span>
            </dd>
          </dl>
        </li>
                <li>
          <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="img_box">
            <img src="/uploads/20221223/ac110f88206daeab6c0cf38ebf5fe9ed.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="从零制作响应式网站—Grid布局">
                      </a>
          <dl>
            <dt class="lineOverflow">
              从零制作响应式网站—Grid布局            </dt>
            <dd class="cont1 lineOverflow">本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。</dd>
            <dd class="cont2">
              <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="toStudy">立即学习</a>
              <span>484次学习</span>
            </dd>
          </dl>
        </li>
              </ul>
    </div>
        </div>
  <!-- footer -->
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<div class="footer">
    <ul>
      <li  ><a href="/" class="aLightGray"><em class="material-icons">home</em><span>首页</span></a></li>
      <li  class="curr"><a href="/articlelist.html" class="aLightGray"><em class="material-icons">menu_book</em><span>阅读</span></a></li>
      <li  ><a href="/courselist.html" class="aLightGray"><em class="material-icons">school</em><span>课程</span></a></li>
      <li  ><a href="/ai.html" class="aLightGray"><em class="material-icons">smart_toy</em><span>AI助手</span></a></li>
      <li ><a href="/user.html" class="aLightGray"><em class="material-icons">person</em><span>我的</span></a></li>
    </ul>
  </div>
  <script src="/assets/js/require.js" data-main="/assets/js/require-frontend.js?v=1671101972"></script>
<script>
    var _hmt = _hmt || [];
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?3dc5666f6478c7bf39cd5c91e597423d";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>
</body>
</html>