flask - Display database from python to html

后端 未结 3 1396
既然无缘
既然无缘 2021-02-01 09:40

I have code like this to retrieve data from database and I want to display it in html.

This is app.py

@app.route(\'/news\')
def news():
         


        
相关标签:
3条回答
  • 2021-02-01 09:41

    You can pass your data using render_template() like this:

    cur = con.cursor()
    cur.execute("SELECT * FROM dataset")
    data = cur.fetchall()
    render_template('template.html', data=data)
    

    Then in your template, iterate over the rows, for example you could render table rows for each row:

    {% for item in data %}
    <tr>
        <td>{{item[0]}}</td>
        <td>{{item[1]}}</td>
        ...
    </tr>
    {% endfor %}
    
    0 讨论(0)
  • 2021-02-01 09:44

    Suppose you have table_name = user_info and let's visualize it:

    id| name | email | phone | 1 | Eltac | eltac@gmail.com | +99421112 |


    You can do something like this:

    app_name.py

    from flask import Flask, render_template
    import mysql.connector
    
    mydatabase = mysql.connector.connect(
        host = 'localhost(or any other host)', user = 'name_of_user',
        passwd = 'db_password', database = 'database_name')
    
    
    mycursor = mydatabase.cursor()
    
    #There you can add home page and others. It is completely depends on you
    
    @app.route('/example.html')
    def example():
       mycursor.execute('SELECT * FROM user_info')
       data = mycursor.fetchall()
       return render_template('example.html', output_data = data)
    
    
    

    In the above code we use fetchall() method that's why ID is also included automatically

    (Header html tag and others are ignored. I write only inside of body) example.html

    --snip--
    
    <table>
        <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Phone</th>
        </tr>
        </thead>
        <tbody>
            {% for row in output_data %} <-- Using these '{%' and '%}' we can write our python code -->
                <tr>
                    <td>{{row[0]}}</td>
                    <td>{{row[1]}}</td>
                    <td>{{row[2]}}</td>
                    <td>{{row[3]}}</td>
                </tr>
            {% endfor %}        <-- Because it is flask framework there would be other keywords like 'endfor'   -->
        </tbody>
    </table>
    
    --snip--
    
    
    

    And finally you get expected result

    0 讨论(0)
  • 2021-02-01 09:51

    render_template allows you to pass variables to html, and jinja2 help you to manipulate it. You only need to format your query result and send it within render_template

    Example

    app.py

    @app.route('/test')
    def test_route():
        user_details = {
            'name': 'John',
            'email': 'john@doe.com'
        }
    
        return render_template('test.html', user=user_details)
    

    test.html

    <!DOCTYPE html>
    <html>
        <head>
            <title>test</title>
        </head>
        <body>
            <!-- use {{}} to access the render_template vars-->
            <p>{{user.name}}</p>
            <p>{{user.email}}</p>
        </body>
    </html>
    

    to make the most of jinja2, take a look at his Documentation

    0 讨论(0)
提交回复
热议问题