Освоение Python для веб-разработки

Веб-разработка определяется как создание и поддержка веб-сайтов. При этом веб-разработчики проектируют, программируют, публикуют и поддерживают базы данных. Для программирования используются 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 Оставьте комментарий в разделе комментариев ниже. Хорошего дня:)

Оцените статью
Procodings.ru
Добавить комментарий