Compare commits

..

6 Commits
design ... main

Author SHA1 Message Date
Nyemba Ambela Jean Nicolas cea82264e1 Main Branch updated
2 weeks ago
Nyemba Ambela Jean Nicolas 688e01b2c9 Repot Update
2 weeks ago
Nyemba Ambela Jean Nicolas d764c508a2 Structuration du projet en migranttoutes les branches
3 weeks ago
Nyemba Ambela Jean Nicolas ef15ff8d4b Merge branch 'dev'
3 weeks ago
Nyemba Ambela Jean Nicolas 5b0feb63ac Merge branch 'design' into dev
3 weeks ago
Nyemba Ambela Jean Nicolas a6218563be Rename Rapport/Notes
3 weeks ago

2
.gitignore vendored

@ -0,0 +1,2 @@
venv/
__pycache__/

Binary file not shown.

@ -1,3 +1,8 @@
# Projet / Application : # Projet / Application :
Design asset Création dune application web de type page de blog avec Flask. Lapplication permettra aux utilisateurs de sinscrire (avec vérification par email) et de se connecter pour poster des articles sur une page web.
# Outils :
- Html/Css
- Git
- Python (Flask, Environnement virtuel (Sandbox))

@ -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,24 @@
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo
class RegistrationForm(FlaskForm):
username = StringField('Username',
validators=[DataRequired(), Length(min=2, max=20)])
email = StringField('Email',
validators=[DataRequired(), Email()])
password = PasswordField('Password' , validators=[DataRequired()])
confirm_password = PasswordField('Confirm Password' ,
validators=[DataRequired(), EqualTo('password')])
submit =SubmitField('Sign Up')
class LoginForm(FlaskForm):
email = StringField('Email',
validators=[DataRequired(), Email()])
password = PasswordField('Password' , validators=[DataRequired()])
remember = BooleanField('Remember Me')
submit =SubmitField('Login')

@ -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)

@ -0,0 +1,10 @@
{% extends "layout.html" %}
{% block content %}
{% for post in posts %}
<p> {{ post.universe }} </p>
<p> {{ post.powerlevel }} </p>
<i> {{ post.date_posted }} </i>
{% endfor %}
{% endblock content %}

@ -0,0 +1,8 @@
{% extends "layout.html" %}
{% block content %}
{% for post in posts %}
<h1>{{ post.pagetitle }}</h1>
{% endfor %}
{% endblock content %}

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="{{ url_for('static', filename='main.css')}}">
{% if title %}
<title>Blog post - {{ title }}</title>
{% else %}
<title>Blog posts</title>
{% endif %}
</head>
<body>
{% block navbar %}
{% for post in navbaritems %}
<li><a href="{{ post.url }}"> {{ post.name }} </a></li>
{% endfor %}
{% endblock %}
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for caterogy, message in messages %}
<div>
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endwith %}
<div>
{% block content %}
{% endblock %}
</div>
</body>
</html>

@ -0,0 +1,61 @@
{% extends "layout.html" %}
{% block content %}
<div>
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset>
<legend>Login</legend>
<div>
{{ form.email.label() }}
{% if form.email.errors %}
{{ form.email() }}
<div>
{% for errors in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.email() }}
{% endif %}
</div>
<br>
<div>
{{ form.password.label() }}
{% if form.password.errors %}
{{ form.password()}}
<div>
{% for errors in form.password.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.password() }}
{% endif %}
</div>
<br>
<div>
{{ form.remember() }}
{{ form.remember.label() }}
</div>
</fieldset>
<div>
{{ form.submit() }}
</div>
<small>
<a href="#">Forgot Password</a>
</small>
</form>
</div>
<div>
<small>Need an Account ? <a href="{{ url_for('register') }}">Sign Up Now</a></small>
</div>
{% endblock content %}

@ -0,0 +1,82 @@
{% extends "layout.html" %}
{% block content %}
<div>
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset>
<legend>Join Today</legend>
<div>
{{ form.username.label() }}
{% if form.username.errors %}
{{ form.username()}}
<div>
{% for errors in form.username.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.username() }}
{% endif %}
</div>
<br>
<div>
{{ form.email.label() }}
{% if form.email.errors %}
{{ form.email() }}
<div>
{% for errors in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.email() }}
{% endif %}
</div>
<br>
<div>
{{ form.password.label() }}
{% if form.password.errors %}
{{ form.password()}}
<div>
{% for errors in form.password.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.password() }}
{% endif %}
</div>
<br>
<div>
{{ form.confirm_password.label() }}
{% if form.confirm_password.errors %}
{{ form.confirm_password()}}
<div>
{% for errors in form.confirm_password.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.confirm_password() }}
{% endif %}
</div>
</fieldset>
<div>
{{ form.submit() }}
</div>
</form>
</div>
<div>
<small>Already Have an Account ? <a href="{{ url_for('login') }}">Sign In</a></small>
</div>
{% endblock content %}

Binary file not shown.

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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.
Loading…
Cancel
Save