folgender Flask-Aufbau:
blog/
-blog.py
-sql.py
-comments.db
templates/
-welcome.html
-show_entry.html
-login.html
static/
-bootstrap css bzw js datein
blog.py
Code: Alles auswählen
import sqlite3
from flask import Flask, render_template, g, request, url_for, redirect
app = Flask(__name__)
app.database = 'comments.db'
@app.before_request
def before_request():
    g.db = sqlite3.connect("comments.db")
@app.teardown_request
def teardown_request(exception):
    if hasattr(g, 'db'):
        g.db.close()
@app.route('/')
def home():
    return 'Hello World!'
@app.route('/welcome')
def welcome():
    return render_template("welcome.html")
@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'admin':
            error = 'Invalid credentials. Please try again.'
        else:
            return redirect(url_for('home'))
    return render_template('login.html', error=error)
@app.route('/show_entry')
def show_entry():
    posts = g.db.execute("SELECT title, text FROM posts").fetchall()
    return render_template("show_entry.html", posts=posts)
if __name__ == '__main__':
    app.run(debug=True)
sql.py
Code: Alles auswählen
import sqlite3
conn = sqlite3.connect('comments.db')
conn.execute('''CREATE TABLE posts
	(ID INTEGER PRIMARY KEY AUTOINCREMENT,
		title TEXT NOT NULL,
		text TEXT NOT NULL);''')login.html, welcome.html und
show_entry.html
Code: Alles auswählen
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Flask Blog</title>
    <meta name="viewport" content="width=device-width, initial-scale1.0">
    <link href="static/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
            <div class="container">
                <h3>Posts:</h3>
                {% for post in posts %}
                    <strong>Title:</strong> {{ post.title }}
                    <strong>Post:</strong>  {{ post.text }}
                <br>
                {% endfor %}
            </div>
</body>
</html>wenn ich den projekt ausführe und teste bekomme ich folgende Fehlermeldung raus.
sqlite3.OperationalError
OperationalError: no such table: posts
Code: Alles auswählen
posts = g.db.execute("SELECT title, text FROM posts").fetchall()Wo liegt der Fehler hier ? Ich bin schon am verzweifeln warum das nicht funktioniert.
ps.:ich benutze python 2.7 und neuste flask version

 ). Würde gerne noch eine TimeStamp-Funktion einfügen bin mir allerding nicht sicher ob das sqlite3 beherscht. Und somit werde ich wohl auf SQLAlchemy umsteigen müssen. Auch deswegen weil es viel leichter ist die Bilder in die DB einzubeziehen
 ). Würde gerne noch eine TimeStamp-Funktion einfügen bin mir allerding nicht sicher ob das sqlite3 beherscht. Und somit werde ich wohl auf SQLAlchemy umsteigen müssen. Auch deswegen weil es viel leichter ist die Bilder in die DB einzubeziehen   :K
  :K