Веб-разработка определяется как создание и поддержка веб-сайтов. При этом веб-разработчики проектируют, программируют, публикуют и поддерживают базы данных. Для программирования используются html (язык разметки), css и javascript. Также может использоваться Python. В Python есть несколько фреймворков, таких как Django и Flask, которые используются для разработки веб-сайтов. В этой статье я описываю разработку системы аутентификации с помощью Flask, фреймворка python, на компьютере с операционной системой windows. Ссылка на развернутый веб-сайт находится ЗДЕСЬ.
Настройка окружения.
Первым шагом является создание среды flask, в которой будет разрабатываться приложение flask. В нужном месте создайте папку и назовите ее FlaskAuthSys для обозначения Flask Authentication System. Откройте командную строку. С помощью cd
перейдите в папку FlaskAuthSys. Выполните приведенный ниже код:
pip install flask
Используйте следующий код для проверки установленных пакетов.
pip freeze
Нам также понадобятся flask_sqlalchemy, flask_login, flask_wtf и flask_bootstrap. Следующие строки кода помогут вам установить эти требования. Скопируйте каждую строку отдельно, вставив ее в окно Командной строки, а затем запустите ее.
pip install flask_sqlalchemy
pip install flask_login
pip install flask_wtf
pip install flask_bootstrap
После этого pip freeze покажет все установленные функции.
Настройка приложения Flask.
Создайте python-файл myapp.py
в папке FlaskAuthSys. В нем инициализируйте файл, импортировав все функции, важные для системы аутентификации, с помощью приведенного ниже кода python.
# import flask itself, request, render_template, resirect and url_for
from flask import Flask,request,render_template,redirect,url_for
# import FlaskForm for the authentication details form
from flask_wtf import FlaskForm
# import fields to be used in the form
from wtforms import StringField, PasswordField
# import validation features from wtf
from wtforms.validators import InputRequired, Email, Length
# import python flask bootstrap
from flask_bootstrap import Bootstrap
# import sqlqlchemy for the database we will need later on
from flask_sqlalchemy import SQLAlchemy
# import login features
from flask_login import LoginManager,UserMixin,login_user,login_required,logout_user
import os
import sqlite3
import flask
Теперь давайте создадим экземпляр нашего приложения. Ниже приведенного кода введите следующее:
myapp=Flask(__name__)
if __name__ == '__main__':
myapp.run(debug=True)
Прямо под строкой экземпляра приложения myapp=Flask(__name__)
введите следующий блок кода:
@myapp.route('/')
def index():
return render_template('index.html')
# login section
@myapp.route('/login')
def login():
return render_template('login.html')
# sign up section
@myapp.route('/signup')
def login():
return render_template('signup.html')
# the dashboard
@myapp.route('/dashboard')
def login():
return render_template('dashboard.html')
# log out procedure
@myapp.route('/logout')
def login():
return redirect(url_for('index'))
Инициализация базы данных.
Информация, собранная при регистрации пользователя, хранится в базе данных. Для начала установите splite3 на свой компьютер, руководствуясь этим руководством. Откройте Command Prompt, перейдите к файлу FlaskAuth Sys и вставьте следующий код для создания базы данных, которую мы будем использовать для хранения наших данных.
sqlite3 database.db
для выхода из sqlite3 введите:
.exit
Вернемся в наш файл myapp.py
, создадим поля, которые будут использоваться для хранения данных и таблицу Users
. Вот как это сделать:
class Users(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(80))
Далее импортируем таблицу Users
в созданную database.db
. В командной строке откройте python с помощью:
python
Затем запустите в командной строке следующие строки, по одной за раз, чтобы импортировать таблицу, созданную в myapp.py
в database.db
;
from myapp import db
db.create_all()
Таблица users
теперь создана в базе данных.
Регистрация.
Когда у пользователя сайта еще нет учетной записи, ему не разрешается войти в систему. Для того чтобы пользователь вошел в систему, сначала создается учетная запись с помощью страницы регистрации. Используя этот код, создайте страницу регистрации с именем: signup.html
. Сохраните этот html-файл в папке с именем templates в папке FlaskAuthSys.
Вернувшись в наш файл myapp.py
, создайте экземпляр регистрации с помощью приведенного ниже кода, чтобы указать способ получения данных для хранения:
class RegisterForm(FlaskForm):
username = StringField('username', validators=[InputRequired(), Length(min=4, max=20)])
password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)])
email = StringField('email', validators=[InputRequired(), Email(message='Invalid Email'), Length(max=50)])
Далее обновите раздел регистрации следующим кодом:
@myapp.route('/signup', methods=['GET','POST'])
def signup():
form = RegisterForm()
if form.validate_on_submit():
new_users = Users(username=form.username.data, email=form.email.data, password=form.password.data)
db.session.add(new_users)
db.session.commit()
return '<h1>New user has been created!</h1>'
return render_template('signup.html', form = form)
На этом раздел регистрации завершен.
Вход в систему.
Это просто, поскольку таблица уже создана. Создайте html-файл в templates
под названием login.html
. Вот моя страница входа в систему.
На странице myapp.py
python создайте экземпляр входа в систему с помощью этого кода:
class LoginForm(FlaskForm):
username = StringField('username', validators=[InputRequired(), Length(min=4, max=20)])
password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)])
Обновите код входа следующим образом:
@myapp.route('/login', methods=['GET','POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
users = Users.query.filter_by(username=form.username.data).first()
if users:
if users.password == form.password.data:
login_user(users)
return redirect(url_for('dashboard'))
return '<h1> Invalid username or password</h1>'
return render_template('login.html', form = form)
До этого момента регистрация и вход в систему были выполнены. Остальной код для этого проекта находится в этом репозитории GitHub FlakHostedAuthSys. Спасибо, что прочитали эту статью. Найдите меня в twitter @i_njili Оставьте комментарий в разделе комментариев ниже. Хорошего дня:)