Created
May 24, 2018 07:28
-
-
Save vihar/e98fe7af0c207f46fe6448a62772c279 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from flask import Flask, request, render_template, url_for, redirect | |
from flask_sqlalchemy import SQLAlchemy | |
from flask_script import Manager | |
from flask_migrate import Migrate, MigrateCommand | |
from flask_wtf import FlaskForm | |
from wtforms import StringField | |
from wtforms.validators import DataRequired | |
app = Flask(__name__) | |
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/appdb' | |
app.config.update(dict( | |
SECRET_KEY="powerful secretkey", | |
WTF_CSRF_SECRET_KEY="a csrf secret key" | |
)) | |
db = SQLAlchemy(app) | |
migrate = Migrate(app, db) | |
manager = Manager(app) | |
manager.add_command('db', MigrateCommand) | |
class Post(db.Model): | |
__tablename__ = 'post' | |
id = db.Column(db.Integer(), primary_key=True) | |
title = db.Column(db.String(80), unique=True) | |
post_text = db.Column(db.String(255)) | |
def __init__(self, title, post_text): | |
self.title = title | |
self.post_text = post_text | |
# Declaring Flask WTF-Form | |
class PostForm(FlaskForm): | |
title = StringField('Title', validators=[DataRequired()]) | |
post_text = StringField('Post_Text', validators=[DataRequired()]) | |
@app.route('/') | |
def index(): | |
return "Hello World" | |
@app.route('/addpost', methods=['GET', 'POST']) | |
def add_post(): | |
postform = PostForm() | |
if request.method == 'POST': | |
pf = Post( | |
postform.title.data, | |
postform.post_text.data, | |
) | |
db.session.add(pf) | |
db.session.commit() | |
return redirect(url_for('view_posts')) | |
return render_template('post_form.html', postform=postform) | |
@app.route('/posts', methods=['GET', 'POST']) | |
def view_posts(): | |
posts = Post.query.all() | |
return render_template('view_posts.html', posts=posts) | |
app = Flask(__name__) | |
if __name__ == "__main__": | |
manager.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment