项目实训(六) —— flask将数据库数据传向HTML

本篇记录将flask内容读入前端的经验。

flask将后端数据传入前端有固定的语句。以根目录绑定的函数为例(以下最后一行):

@app.route('/')
def show():
    result = read_data(user_ID)  # 读数据库并传到变量result内
    data = np.array(result)      # 列表转化为数组,便于操作
    # print(data)
    number = data.shape[0]       # 获取数组行数,即为记录信息条数
    return render_template('circle_show.html', user_data=data, food_number=number, user_id=user_ID, user_name=user_name)

return render_template()方法的第一个参数是指定返回的HTML,后续参数就是向该HTML传递参数的部分。以上将列表“result”强制转化为数组后,传入HTML,或许无此必要。

HTML内使用参数时,需要以固定的格式:用“{{ 名称 }}”标识该量由后端传入。

凡是传入的变量都可以直接在HTML内简单地使用:

<div id="ID">{{ user_id }}——{{ user_name }}</div>


for (var i = 0; i < {{food_number}}; i++)

但是如果想要用for循环有目的地展现一个传入的数组,就遇到了问题:for循环的循环关键参数 i 无法被传入的数组的下表识别。

在花费一天时间后,终于以jianjia2和Java script语言嵌套入HTML的方式得以解决。

主要思路是:

1. 建立新的数组,利用jianjia2按照列接收传入的二维数组的数据:

<script type="text/javascript">
     namearray=[]
     materialarray=[]
     timearray=[]
     picarray=[]
</script>

{% for data in user_data %}
     <script type="text/javascript">
            namearray.push('{{data[:][0]}}');
            materialarray.push('{{data[:][1]}}');
            timearray.push('{{data[:][2]}}');
            picarray.push('{{data[:][3]}}');
     </script>
{% endfor %}

2. 再Java script的for循环既可以自如使用新的含有原列表数据的数组了:

 <script>
 //遍历数据 利用下标的变化
 for (var i = 0; i < {{food_number}}; i++) {
     var j =i+1;
     var picname =picarray[i];
     
     document.write("<h2>" + j + '号菜谱' + "<h2/>");
     document.write("<h3>" + '菜名:'+ namearray[i] + "<h3/>");
     document.write("<h3>" + '材料:'+ materialarray[i] + "<h3/>");
     document.write("<img src= "+picname+">");
     document.write("<h3>" + '上传时间:'+ timearray[i] + "<h3/>");    
 }
</script>

此方法虽然解决的读取显示的问题,但无疑是以增大空间复杂度为代价而实现的,若后续能发现新的更好的方法,定加以替换。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值