Zurzeit habe ich ein Problem mit den Flask user sessions.
Ich bastel seit ein paar wochen an einer eigenen Forensoftware rum. Das erstellen eines users und eintragen in die Flask session klappt problemlos. (Ja die Session existiert, hab dafür eine Status seite gebastelt).
Im Hintergrund läuft eine SQLite3 Datenbank zum Managen von Usern und Posts. (Falls euch das hilft).
Wenn ich einen Post erstelle, soll natürlich auch der Username des Users mti in die Datenbank zum Post geschrieben werden, und genau da liegt das Problem. Ich kriege es ums verrecken nicht hin den Usernamen auszulesen, hat jemand von euch ne Idee?
Code: Alles auswählen
import sqlite3
from flask import Flask, escape, request, session, render_template
import hashlib
import os
app = Flask(__name__)
app.secret_key = b'\x04!f\xd2\x95\xb8\xca\xa6\xb7R\x89PU\xad\xbc\xb0Z>\xde\x1b\xc6x\xa5^'
@app.route("/")
def index():
return render_template('index.html')
@app.route("/register")
def register():
if 'username' in session:
return "Du musst dich ausloggen um dich zu registrieren!"
else:
return render_template("register.html")
@app.route("/registeruser", methods=['POST', 'GET'])
def registeruser():
name = ""
passwd = ""
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
if request.method == 'POST':
name = request.form['name']
passwd = request.form['password']
passwdconfirm = request.form['passwordconfirm']
if passwdconfirm != passwd:
return "Passwörter sind nicht gleich!"
else:
hashobj = hashlib.sha256(passwd.encode())
hashed_pw = hashobj.hexdigest()
cursor.execute("INSERT INTO user (name, password) VALUES(?,?)", (name, hashed_pw ))
conn.commit()
conn.close()
session['username'] = name
return "User registriert!"
else:
return "Ein fehler ist aufgetreten!"
@app.route("/status")
def status():
try:
return "Eingeloggt als " + escape(session['username'])
except:
return "Du bist nicht eingeloggt!"
@app.route("/post")
def post():
if 'username' not in session:
return "Du musst dich einloggen um zu posten!"
else:
return render_template("newpost.html")
@app.route("/newpost", methods=['POST', 'GET'])
def newpost():
if request.method == 'POST':
posttext = request.form['post-text']
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
postowner = session.get('username')
cursor.execute("INSERT INTO post VALUES (?, ?)", (posttext, postowner))
conn.commit()
conn.close()
return render_template("index.html")
@app.route("/logout")
def logout():
session.pop('username', None)
return "Du hast dich ausgeloggt!"
@app.route("/latestpost")
def latestpost():
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM posts ORDER BY ROWID DESC LIMIT 1")
result = cursor.fetchall()
latest = result[0][0]
conn.close()
return render_template('latestpost.html', post = latest )
if __name__ == '__main__':
app.run(port=1337, debug=True)
Wäre nett wenn mir schnell jemand helfen könnte.
~richtigerkevin