← flask-blog

SQLAlchemy

16b6c6f9083312f540646250c48b15b9717f2768 · ovidiucs · May 14, 2015 12:27

+50 −2 · 2 files changed

  • flask-blog.py +18 −2
  • templates/sqla.html +32 −0
diff --git a/flask-blog.py b/flask-blog.py
index 6ef8095..9cadf5a 100644
--- a/flask-blog.py
+++ b/flask-blog.py
@@ -42,9 +42,7 @@ class UploadForm(Form):
 
 
 class User(db.Model):
-    # custom table name
     __tablename__ = 'users'
-
     id = db.Column(db.Integer, primary_key=True)
     name = db.Column(db.String(16), index=True, unique=True)
 
@@ -174,10 +172,28 @@ def index6():
     return render_template('other.html', count=session['count'], when=g.when)
 
 
+@app.route('/sql', methods=['GET', 'POST'])
+def sqla():
+    name = None
+    new = False
+
+    form = NameForm()
+
+    if form.validate_on_submit():
+        name = form.name.data
+        form.name.data = ''
+        if User.query.filter_by(name=name).first() is None:
+            db.session.add(User(name=name))
+            db.session.commit()
+            new = True
+    return render_template('sqla.html', form=form, name=name, new=new)
+
+
 @app.errorhandler(404)
 def not_found(e):
     return render_template('404.html')
 
 
 if __name__ == '__main__':
+    db.create_all()
     app.run(debug=True)
diff --git a/templates/sqla.html b/templates/sqla.html
new file mode 100644
index 0000000..709c892
--- /dev/null
+++ b/templates/sqla.html
@@ -0,0 +1,32 @@
+{% extends "bootstrap/base.html" %}
+{% import "bootstrap/wtf.html" as wtf %}
+
+{% block title %}Relational Database Example{% endblock %}
+
+{% block navbar %}
+    <nav class="navbar navbar-inverse" role="navigation">
+        <div class="container">
+            <a class="navbar-brand" href="{{ url_for('sqla') }}">Hello</a>
+        </div>
+    </nav>
+
+{% endblock %}
+
+{% block content %}
+    <div class="container">
+        <div class="row">
+            <div class="col-md-3">
+                {{ wtf.quick_form(form) }}
+            </div>
+        </div>
+        {% if name %}
+            <h1>Hello, {{ name }}!</h1>
+            {% if new %}
+                <p>Pleased to meet you!</p>
+            {% else %}
+                <p>Happy to see you again!</p>
+            {% endif %}
+        {% endif %}
+    </div>
+
+{% endblock %}
\ No newline at end of file