from flask import Flask, render_template, request, flash, url_for, redirect
from movie import Movie, db
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = database_path'sqlite:///adatabase.db'
db.init_app(app)
# regular route definitions
if __name__ == '__main__':
app.run(debug=True)
The general route usually respond to GET and POST, the specific one usually respond to GET, PUT and DELETEPUT and DELETE.
from datetime import datetime
from contextlib import suppress
from flask import Flask, render_template, request, redirect, url_for
from movie import Movie, db
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = database_path'sqlite:///adatabase.db'
db.init_app(app)
@app.route('/', methods=['GET'])
@app.route('/movies', methods=['POST', 'GET'])
def movies():
if request.method == 'POST':
title = request.form['title']
release_date = request.form['release_date']
db.session.add(Movie(title, parse_release_date(release_date)))
db.session.commit()
movies = Movie.query.all()
return render_template('movies.html', movies=movies)
@app.route('/movies/<int:post_id>', methods=['GET', 'PUT', 'DELETE'])
def movie(post_id):
the_movie = Movie.query.filter(Movie.id == post_id).first()
if request.method == 'DELETE':
db.session.delete(the_movie)
db.session.commit()
return redirect(url_for('movies'))
if request.method == 'PUT':
with suppress(KeyError):
the_movie.title = request.form['title']
with suppress(KeyError):
the_movie.release_date = parse_release_date(request.form['release_date'])
db.session.commit()
return render_template('single_movie.html', movie=the_movie)
def parse_release_date(date):
parsed_date = datetime.strptime(date, '%Y-%m-%d')
return parsed_date.date()
if __name__ == '__main__':
app.run(debug=True)