Skip to content

Commit 81130ad

Browse files
committed
Added Web Forms
1 parent 798958c commit 81130ad

File tree

7 files changed

+99
-8
lines changed

7 files changed

+99
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ mbvenv
22
application/__pycache__/
33
activate
44
__pycache__
5+
.env

application/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
from flask import Flask
2+
from config import Config
23

34
app = Flask(__name__)
5+
app.config.from_object(Config)
6+
47
from application import routes

application/forms.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from flask_wtf import FlaskForm
2+
from wtforms import StringField,PasswordField,SubmitField,BooleanField
3+
from wtforms.validators import DataRequired
4+
5+
class LoginForm(FlaskForm):
6+
username = StringField('Username',validators=[DataRequired()])
7+
password = PasswordField('Password',validators=[DataRequired()])
8+
remember_me = BooleanField('Remember Me')
9+
submit = SubmitField('Sign In')

application/routes.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from flask import render_template,flash, redirect,request,url_for
22
from application import app
3+
from application.forms import LoginForm
34

45
@app.route('/')
56
def index():
@@ -19,3 +20,12 @@ def posts():
1920
}
2021
]
2122
return render_template('posts.html', user = user,posts = posts)
23+
24+
@app.route('/login', methods=['GET', 'POST'])
25+
def login():
26+
form = LoginForm()
27+
if form.validate_on_submit():
28+
flash('You are Logged In {}'.format(
29+
form.username.data))
30+
return redirect('/')
31+
return render_template('login.html',title = 'Sign In',form = form)

application/templates/base.html

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
body {
1313
font-family: 'Open Sans', sans-serif;
1414
}
15+
.alert{
16+
right:1.5rem;
17+
bottom:1rem;
18+
}
1519
</style>
1620

1721
{% if title %}
@@ -21,17 +25,34 @@
2125
{% endif %}
2226
</head>
2327
<body>
24-
<nav class="navbar navbar-expand-lg navbar-light bg-light">
25-
<a class="navbar-brand" href="#">Microblog</a>
26-
<ul class="navbar-nav">
27-
<li class="nav-item active">
28-
<a class="nav-link" href="{{url_for('index')}}">Home <span class="sr-only">(current)</span></a>
28+
<nav class="navbar navbar-expand-lg bg-dark d-flex">
29+
<div class="col-md-3">
30+
<a class="navbar-brand text-white" href="#">Microblog</a>
31+
</div>
32+
<div class="col-md-9">
33+
<ul class="navbar-nav justify-content-end">
34+
<li class="nav-item active mx-4">
35+
<a class="nav-link text-light" href="{{url_for('index')}}">Home</a>
36+
</li>
37+
<li class="nav-item mx-4">
38+
<a class="nav-link text-light" href="{{url_for('posts')}}">Posts</a>
2939
</li>
30-
<li class="nav-item">
31-
<a class="nav-link" href="{{url_for('posts')}}">Posts</a>
40+
<li class="nav-item mx-4">
41+
<a class="nav-link text-light" href="{{url_for('login')}}">Sign In</a>
3242
</li>
3343
</ul>
44+
</div>
3445
</nav>
35-
{% block content %} {% endblock %}
46+
{% with messages = get_flashed_messages() %}
47+
{% if messages %}
48+
{% for message in messages %}
49+
<div class="alert alert-success mt-2 col-md-4 position-fixed" role="alert">
50+
{{message}}
51+
</div>
52+
{% endfor %}
53+
{% endif %}
54+
{% endwith %}
55+
{% block content %} {% endblock %}
3656
</body>
57+
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
3758
</html>

application/templates/login.html

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{% extends "base.html" %}
2+
3+
{% block content %}
4+
<style>
5+
.error{
6+
color:darkred;
7+
}
8+
</style>
9+
<div class="container-fluid">
10+
<div class="row">
11+
<div class="col-md mt-4 d-flex justify-content-center">
12+
<div class="row">
13+
<div class="col-md">
14+
<h1>Sign In</h1>
15+
<form action = "" method="POST" novalidate>
16+
{{form.hidden_tag()}}
17+
<p>
18+
{{form.username.label }}<br>
19+
{{form.username(size = 32,class_ = "form-control border-bottom border-left-0 border-right-0 border-top-0 rounded-0 px-1 border-primary")}}
20+
{% for error in form.username.errors%}
21+
<span class="error">{{error}}</span>
22+
{% endfor %}
23+
</p>
24+
<p>
25+
{{form.password.label }}<br>
26+
{{form.password(size = 32,class_ = "form-control border-bottom border-left-0 border-right-0 border-top-0 rounded-0 px-1 border-primary")}}
27+
{% for error in form.password.errors%}
28+
<span class="error">{{error}}</span>
29+
{% endfor %}
30+
</p>
31+
<p>
32+
{{form.remember_me}} {{form.remember_me.label}}
33+
</p>
34+
<p>
35+
{{ form.submit(class_ = "btn btn-primary btn-sm rounded-0") }}
36+
</p>
37+
</form>
38+
</div>
39+
</div>
40+
</div>
41+
</div>
42+
</div>
43+
{% endblock%}

config.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import os
2+
3+
class Config(object):
4+
SECRET_KEY = os.environ.get('SECRET_KEY') or 'You-will-never-guess'

0 commit comments

Comments
 (0)