from flask import (Flask,
make_response,
redirect,
render_template,
abort, url_for, session)
from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from wtforms import (StringField,
IntegerField,
SubmitField)
from wtforms.validators import DataRequired, Length
from flask_wtf import Form
from collections import OrderedDict
app = Flask(__name__, template_folder="templates")
manager = Manager(app)
bootstrap = Bootstrap(app)
db = SQLAlchemy(app)
migrate = Migrate(app=app, db=db)
manager.add_command('db', MigrateCommand)
import os
app.config["SECRET_KEY"] = "uezfhuizehfuhzefhzefzie347687U"
basedir = os.path.abspath(os.path.dirname(__file__))
app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(basedir, 'mesdonnees.sqlite')
class NouveauForm(Form):
name = StringField("Ton nom !!!", validators=[DataRequired()])
submit_button = SubmitField("Envoi")
# 1 user peut avoir plusieurs posts
# 1 post ne vient qu'un utilisateur
class Post(db.Model):
__tablename__ = "posts"
id_ = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey("users.id_"))
def __repr__(self):
return "Le Post num : {} , nom : {}".format(self.id_, self.name)
class User(db.Model):
__tablename__ = "users"
id_ = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(30), unique=True, nullable=False)
#email = db.Column(db.String(100), unique=True)
#age = db.Column(db.String(100))
posts = db.relationship("Post", backref="user")
def __repr__(self):
return "User n°{} name: {}".format(self.id_, self.username)
@app.route('/')
def bonjour():
return "test"
@app.route('/login/')
def myfonction():
return render_template("autre_page.html",
var1=session.get("name"))
@app.route('/users/')
def all_users():
return render_template('listing.html', liste=User.query.all())
@app.route('/posts/')
def all_posts():
return render_template('listing.html', liste = Post.query.all())
@app.route('/test/<name>', methods=['GET', 'POST'])
def test(name):
# if request.method == "GET":
# pass
# if request.method == "PUT":
# pass
# if request.method == "POST"
# pass
myform = NouveauForm()
if myform.validate_on_submit():
session['name'] = myform.name.data
# je filtre dans ma db en recherche de user
user_retrieved = User.query.filter_by(username=myform.name.data).first()
print(user_retrieved)
if user_retrieved is None:
# if n'existe pas
# je crée une nouvelle instance user
user = User(username = myform.name.data)
db.session.add(user)
db.session.commit()
# pour garder en mémoire
session["connu"] = "Vous êtes inconnu, on vous ajoute !"
else:
session["connu"] = "Vous êtes connu de la bdd !"
myform.name.data = ''
return redirect(url_for('test', name=session.get('name')))
contenu_html = "<h1> Salut toi ;) </h1>"
dico = OrderedDict({
"tâche1": "Faire la vaisselle",
"tâche2": "Faire le ménage",
"tâche3": "écouter Monsieur Bertin"
})
# presentation rendered
return render_template("index.html", var1=name, var2=contenu_html, dico=dico, form=myform, connu=session.get("connu"))
@app.route("/voiciunredirect/")
def unefonction():
return redirect("myfonction")
@app.route('/user/<name>')
def trouve(name):
# -----
return "<h1>Hello <i>" + name + "</i></h1>"
#@app.route('/<path:nompath>')
# def test2(nompath):
# return "<h1>Hello</h1>"
@app.route('/<path:nompath>')
def error_404(nompath):
abort(404, "The page {} is not found".format(nompath))
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html', error_message=e), 404
if __name__ == "__main__":
manager.run()
from flask import (Flask,
make_response,
redirect,
render_template,
abort, url_for, session)
from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from wtforms import (StringField,
IntegerField,
SubmitField)
from wtforms.validators import DataRequired, Length
from flask_wtf import Form
from collections import OrderedDict
app = Flask(__name__, template_folder="templates")
manager = Manager(app)
bootstrap = Bootstrap(app)
db = SQLAlchemy(app)
migrate = Migrate(app=app, db=db)
manager.add_command('db', MigrateCommand)
import os
app.config["SECRET_KEY"] = "uezfhuizehfuhzefhzefzie347687U"
basedir = os.path.abspath(os.path.dirname(__file__))
app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(basedir, 'mesdonnees.sqlite')
class NouveauForm(Form):
name = StringField("Ton nom !!!", validators=[DataRequired()])
submit_button = SubmitField("Envoi")
# 1 user peut avoir plusieurs posts
# 1 post ne vient qu'un utilisateur
class Post(db.Model):
__tablename__ = "posts"
id_ = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey("users.id_"))
def __repr__(self):
return "Le Post num : {} , nom : {}".format(self.id_, self.name)
class User(db.Model):
__tablename__ = "users"
id_ = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(30), unique=True, nullable=False)
#email = db.Column(db.String(100), unique=True)
#age = db.Column(db.String(100))
posts = db.relationship("Post", backref="user")
def __repr__(self):
return "User n°{} name: {}".format(self.id_, self.username)
@app.route('/')
def bonjour():
return "test"
@app.route('/login/')
def myfonction():
return render_template("autre_page.html",
var1=session.get("name"))
@app.route('/users/')
def all_users():
return render_template('listing.html', liste=User.query.all())
@app.route('/posts/')
def all_posts():
return render_template('listing.html', liste = Post.query.all())
@app.route('/test/<name>', methods=['GET', 'POST'])
def test(name):
# if request.method == "GET":
# pass
# if request.method == "PUT":
# pass
# if request.method == "POST"
# pass
myform = NouveauForm()
if myform.validate_on_submit():
session['name'] = myform.name.data
# je filtre dans ma db en recherche de user
user_retrieved = User.query.filter_by(username=myform.name.data).first()
print(user_retrieved)
if user_retrieved is None:
# if n'existe pas
# je crée une nouvelle instance user
user = User(username = myform.name.data)
db.session.add(user)
db.session.commit()
# pour garder en mémoire
session["connu"] = "Vous êtes inconnu, on vous ajoute !"
else:
session["connu"] = "Vous êtes connu de la bdd !"
myform.name.data = ''
return redirect(url_for('test', name=session.get('name')))
contenu_html = "<h1> Salut toi ;) </h1>"
dico = OrderedDict({
"tâche1": "Faire la vaisselle",
"tâche2": "Faire le ménage",
"tâche3": "écouter Monsieur Bertin"
})
# presentation rendered
return render_template("index.html", var1=name, var2=contenu_html, dico=dico, form=myform, connu=session.get("connu"))
@app.route("/voiciunredirect/")
def unefonction():
return redirect("myfonction")
@app.route('/user/<name>')
def trouve(name):
# -----
return "<h1>Hello <i>" + name + "</i></h1>"
#@app.route('/<path:nompath>')
# def test2(nompath):
# return "<h1>Hello</h1>"
@app.route('/<path:nompath>')
def error_404(nompath):
abort(404, "The page {} is not found".format(nompath))
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html', error_message=e), 404
if __name__ == "__main__":
manager.run()