sqlite 使用Html文件显示数据库

6xfqseft  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(363)

我的网站有一个选项,以添加产品(提供名称和价格)。我使用Sqlite3存储此数据:

import sqlite3
from main import *
from flask import flash

conn =  sqlite3.connect('products.db')
c = conn.cursor()
c.execute(""" CREATE TABLE IF NOT EXISTS products (
            name text,
            price integer
        )  """)
c.execute("SELECT * FROM products")
existence = False

for name in c:
    if name[0] == request.form["product"]:
        existence = True

if existence:
    flash('This item already exist !! ',category='error')
else:
    flash('Item added successfully',category='success')

c.execute (" INSERT OR IGNORE INTO products VALUES (?,?)",[request.form["product"],request.form["price"]])
c.execute("SELECT * FROM products")

conn.commit()
conn.close()

我想在我的网站上展示所有的产品。它看起来像什么:

{% extends "base.html" %}
{% block title%} Products {% endblock %}
{% block content %}
<h1></h1>
{% endblock %}

也许我可以使用该Python文件来显示我的数据?也许我应该使用另一种方式来存储我的数据?

eulz3vhy

eulz3vhy1#

首先,创建一条指向产品页面的应用程序路径。
无论您的html页面名称是什么,请用您的html页面名称替换python文件末尾的RETURN_TEMPLATE中的‘ducts.html’。
将一个变量分配给您选择所有产品的位置,然后添加一个fetchall。在呈现Products.html时,将其返回为product=Products。

import sqlite3
from main import *
from flask import Flask, render_template, flash

@app.route('/products')
def products():
    conn =  sqlite3.connect('products.db')
        
    c = conn.cursor()
        
    c.execute(""" CREATE TABLE IF NOT EXISTS products (
                  name text,
                  price integer
              )  """)
    
    products = c.execute("SELECT * FROM products").fetchall()
        
    existence = False
        
    for name in c:
        if name[0] == request.form["product"]:
            existence = True
        
    if existence:
          flash('This item already exist !! ',category='error')
      else:
          flash('Item added successfully',category='success')
        
    c.execute (" INSERT OR IGNORE INTO products VALUES (?,?)"[request.form["product"],request.form["price"]])
        
    c.execute("SELECT * FROM products")
          
    conn.commit()
        
    conn.close()

    return render_template('products.html', products=products)

为了在您的实际产品页面中显示这一点,我们需要使用在JJJA中内置的python‘for loops’。这会检查数据库中的每一种产品,并打印出价格和名称。

{% extends "base.html" %}
{% block title%} Products {% endblock %}
{% block content %}
  {% for product in products %}
    <h1>{{ product.price }}</h1>
    <h1>{{ product.name }}</h1>
  {% endfor %}
{% endblock %}

相关问题