Flask, deploiement serveur/structuration de l'application en package | git, ajout d'une branche design
	
		
	
				
					
				
			
							parent
							
								
									06cc7c5708
								
							
						
					
					
						commit
						1294564127
					
				
											
												Binary file not shown.
											
										
									
								@ -1,97 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from datetime import datetime
 | 
					 | 
				
			||||||
from flask import Flask, render_template, url_for, flash, redirect
 | 
					 | 
				
			||||||
from flask_sqlalchemy import SQLAlchemy   # type: ignore
 | 
					 | 
				
			||||||
from forms import RegistrationForm, LoginForm
 | 
					 | 
				
			||||||
app = Flask(__name__)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
app.config['SECRET_KEY'] = 'db3746b2ffa650b3804e4316d227f853'
 | 
					 | 
				
			||||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blogsite.db'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
db = SQLAlchemy(app)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class User(db.Model):
 | 
					 | 
				
			||||||
    id = db.Column(db.Integer, primary_key=True)
 | 
					 | 
				
			||||||
    username = db.Column(db.String(20), unique=True, nullable=False)
 | 
					 | 
				
			||||||
    email = db.Column(db.String(120), unique=True, nullable=False)
 | 
					 | 
				
			||||||
    image_file = db.Column(db.String(20), nullable=False,
 | 
					 | 
				
			||||||
                           default='default.jpg')
 | 
					 | 
				
			||||||
    password = db.Column(db.String(60), nullable=False)
 | 
					 | 
				
			||||||
    posts = db.relationship('Post', backref='author', lazy=True)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __repr__(self):
 | 
					 | 
				
			||||||
        return f"User('{self.username}', '{self.image_file}')"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Post(db.Model):
 | 
					 | 
				
			||||||
    id = db.Column(db.Integer, primary_key=True)
 | 
					 | 
				
			||||||
    title = db.Column(db.String(100), nullable=False)
 | 
					 | 
				
			||||||
    date_posted = db.Column(db.DateTime, nullable=False,
 | 
					 | 
				
			||||||
                            default=datetime.utcnow)
 | 
					 | 
				
			||||||
    content = db.Column(db.Text, nullable=False)
 | 
					 | 
				
			||||||
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __repr__(self):
 | 
					 | 
				
			||||||
        return f"Post('{self.title}', '{self.date_posted}')"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
posts = [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        'pagetitle': 'home page'
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
navbaritems = [
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        'name': 'home',
 | 
					 | 
				
			||||||
        'url': 'home'
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        'name': 'login',
 | 
					 | 
				
			||||||
        'url': 'login'
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        'name': 'register',
 | 
					 | 
				
			||||||
        'url': 'register'
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@app.route("/")
 | 
					 | 
				
			||||||
@app.route("/home")
 | 
					 | 
				
			||||||
def home():
 | 
					 | 
				
			||||||
    return render_template('home.html', posts=posts, navbaritems=navbaritems)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@app.route("/about")
 | 
					 | 
				
			||||||
def about():
 | 
					 | 
				
			||||||
    return render_template('about.html', title='About', posts=posts, navbaritems=navbaritems)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@app.route("/register", methods=['GET', 'POST'])
 | 
					 | 
				
			||||||
def register():
 | 
					 | 
				
			||||||
    form = RegistrationForm()
 | 
					 | 
				
			||||||
    if form.validate_on_submit():
 | 
					 | 
				
			||||||
        flash(f'Account created for {form.username.data}!')
 | 
					 | 
				
			||||||
        return redirect(url_for('home'))
 | 
					 | 
				
			||||||
    return render_template('register.html', title='Register', form=form)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@app.route("/login", methods=['GET', 'POST'])
 | 
					 | 
				
			||||||
def login():
 | 
					 | 
				
			||||||
    form = LoginForm()
 | 
					 | 
				
			||||||
    if form.validate_on_submit():
 | 
					 | 
				
			||||||
        if form.email.data == 'admin' and form.password.data == 'admin':
 | 
					 | 
				
			||||||
            flash('You have been log in !')
 | 
					 | 
				
			||||||
            return redirect(url_for('home'))
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            flash('Login Unsuccessful')
 | 
					 | 
				
			||||||
    return render_template('login.html', title='Login', form=form)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					 | 
				
			||||||
    app.run(debug=True, host='0.0.0.0', port=8700)
 | 
					 | 
				
			||||||
@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					from flask import Flask
 | 
				
			||||||
 | 
					from flask_sqlalchemy import SQLAlchemy   # type: ignore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app = Flask(__name__)
 | 
				
			||||||
 | 
					app.config['SECRET_KEY'] = 'db3746b2ffa650b3804e4316d227f853'
 | 
				
			||||||
 | 
					app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blogsite.db'
 | 
				
			||||||
 | 
					db = SQLAlchemy(app)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from blogapp import routes
 | 
				
			||||||
@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					from datetime import datetime
 | 
				
			||||||
 | 
					from blogapp import db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class User(db.Model):
 | 
				
			||||||
 | 
					    id = db.Column(db.Integer, primary_key=True)
 | 
				
			||||||
 | 
					    username = db.Column(db.String(20), unique=True, nullable=False)
 | 
				
			||||||
 | 
					    email = db.Column(db.String(120), unique=True, nullable=False)
 | 
				
			||||||
 | 
					    image_file = db.Column(db.String(20), nullable=False,
 | 
				
			||||||
 | 
					                           default='default.jpg')
 | 
				
			||||||
 | 
					    password = db.Column(db.String(60), nullable=False)
 | 
				
			||||||
 | 
					    posts = db.relationship('Post', backref='author', lazy=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __repr__(self):
 | 
				
			||||||
 | 
					        return f"User('{self.username}', '{self.image_file}')"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Post(db.Model):
 | 
				
			||||||
 | 
					    id = db.Column(db.Integer, primary_key=True)
 | 
				
			||||||
 | 
					    title = db.Column(db.String(100), nullable=False)
 | 
				
			||||||
 | 
					    date_posted = db.Column(db.DateTime, nullable=False,
 | 
				
			||||||
 | 
					                            default=datetime.utcnow)
 | 
				
			||||||
 | 
					    content = db.Column(db.Text, nullable=False)
 | 
				
			||||||
 | 
					    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __repr__(self):
 | 
				
			||||||
 | 
					        return f"Post('{self.title}', '{self.date_posted}')"
 | 
				
			||||||
@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					from flask import render_template, url_for, flash, redirect
 | 
				
			||||||
 | 
					from blogapp import app
 | 
				
			||||||
 | 
					from blogapp.forms import RegistrationForm, LoginForm
 | 
				
			||||||
 | 
					from blogapp.models import User, Post
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					posts = [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        'pagetitle': 'home page'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					navbaritems = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        'name': 'home',
 | 
				
			||||||
 | 
					        'url': 'home'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        'name': 'login',
 | 
				
			||||||
 | 
					        'url': 'login'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        'name': 'register',
 | 
				
			||||||
 | 
					        'url': 'register'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route("/")
 | 
				
			||||||
 | 
					@app.route("/home")
 | 
				
			||||||
 | 
					def home():
 | 
				
			||||||
 | 
					    return render_template('home.html', posts=posts, navbaritems=navbaritems)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route("/about")
 | 
				
			||||||
 | 
					def about():
 | 
				
			||||||
 | 
					    return render_template('about.html', title='About', posts=posts, navbaritems=navbaritems)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route("/register", methods=['GET', 'POST'])
 | 
				
			||||||
 | 
					def register():
 | 
				
			||||||
 | 
					    form = RegistrationForm()
 | 
				
			||||||
 | 
					    if form.validate_on_submit():
 | 
				
			||||||
 | 
					        flash(f'Account created for {form.username.data}!')
 | 
				
			||||||
 | 
					        return redirect(url_for('home'))
 | 
				
			||||||
 | 
					    return render_template('register.html', title='Register', form=form)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route("/login", methods=['GET', 'POST'])
 | 
				
			||||||
 | 
					def login():
 | 
				
			||||||
 | 
					    form = LoginForm()
 | 
				
			||||||
 | 
					    if form.validate_on_submit():
 | 
				
			||||||
 | 
					        if form.email.data == 'admin' and form.password.data == 'admin':
 | 
				
			||||||
 | 
					            flash('You have been log in !')
 | 
				
			||||||
 | 
					            return redirect(url_for('home'))
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            flash('Login Unsuccessful')
 | 
				
			||||||
 | 
					    return render_template('login.html', title='Login', form=form)
 | 
				
			||||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					from blogapp import app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    app.run(debug=True, host="0.0.0.0", port=8700)
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue