Как сохранить имя пользователя и пароль в Flask?

навигации в Flask Изучение

В этой статье мы обсудим, как сохранить имя пользователя и пароль на веб-сайте Flask. Мы можем просмотреть приветственное сообщение и имя пользователя, которое мы выбрали при регистрации, на странице профиля после входа в систему с нашим именем пользователя и паролем. Имена последующих пользователей, которые регистрируются с использованием данных для входа, которые мы будем использовать здесь, также будут отображаться на экране страницы профиля. Чтобы сохранить учетные данные для входа и регистрации пользователя, код Python будет связан с базой данных Flask MySQL. Оттуда мы можем использовать phpmyadmin, чтобы увидеть, сколько пользователей зарегистрировалось и изменило свою информацию.

Требуемый модуль

Для создания нашего проекта мы устанавливаем Flask и Flask-MySQLdb и создаем виртуальную среду.

pip install Flask-MySQLdb
pip install Flask

Файлы шаблонов

Создайте папку шаблонов, и в папке шаблонов мы создали три файла: один для register.html, другой для login.html и, наконец, один для user.html.

register.html

Этот файл HTML содержит простую регистрационную форму, которая запрашивает три входа: имя пользователя, адрес электронной почты и пароль. После заполнения этих полей нажмите кнопку регистрации, чтобы увидеть мигающее сообщение о том, что форма была успешно отправлена ​​и что регистрационная информация была безопасно сохранена в базе данных MySQL. Для мигающего массажа мы используем Jinja2 в файле HTML, поэтому теперь мы можем войти в систему, используя наши учетные данные. Если мы зарегистрировались с использованием одного и того же адреса электронной почты, идентификатор флэш-почты также будет существовать.

HTML

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>User Registration Form</title>
</head>
<style>
    .hi{
        color: green;
    }
    .ok{
        display: block;
        margin-left: 80px;
        margin-top: -15px;
        border: 1px solid black;
    }
    .gfg{
        margin-left: 30px;
        font-weight: bold;
    }
    .gf{
        margin-left: 10px;
        font-weight: bold;
    }
    .btn{
        margin-top: 20px;
        width: 80px;
        height: 25px;
        background-color: orangered;
        color: white;
    }
    .y{
        color: gray;
    }
</style>
<body>
<div class="container">
    <h2 class="hi" > GFG User Registration </h2>
    <h4 class="y"  >Note : fill following details !</h4>
    <form action="{{ url_for('register') }}" method="post">
        {% if mesage is defined and mesage %}
            <div class="alert alert-warning">  <strong>  {{ mesage }} 😄 </strong></div>
        {% endif %}
        <br>
        <div class="form-group">
            <label class="gfg">Name:</label>
             <input class="ok" type="text" class="form-control" id="name" name="name" placeholder="Enter name" name="name">
        </div>
        <div class="form-group">
            <label class="gfg">Email:</label>
             <input class="ok" type="email" class="form-control" id="email" name="email" placeholder="Enter email" name="email">
        </div>
        <div class="form-group">
            <label class="gf">Password:</label>
        <input class="ok" type="password" class="form-control" id="password" name="password" placeholder="Enter password" name="pswd">
        </div>   
        <button class="btn" type="submit" class="btn btn-primary">Register</button>
        <p class="bottom">Already have an account?  <a class="bottom" href="{{url_for('login')}}"> Login here</a></p>
    </form>
</div>       
</body>
</html>

Выход:

Читайте также:  7 причин, почему разработка программного обеспечения так сложна

Этот файл HTML содержит простую регистрационную форму

register.html

login.html

В файле login.html мы создали два простых входа: имя пользователя и пароль, которые мы успешно зарегистрировали. Если мы введем правильный адрес электронной почты и пароль, он направит нас на страницу профиля пользователя / входа, где мы использовали URL-адрес функции для записи файловой функции, которую мы хотим отобразить после успешной регистрации.

HTML

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>User Login Form</title>
</head>
<style>
    .gfg{
        display: block;
        margin-left: 70px;
        margin-top: -15px;
        
    }
    .ok{
        margin-left: 20px;
        font-weight: bold;
        
    }
    .btn{
        margin-top: 20px;
        width: 80px;
        height: 25px;
        background-color: gray;
        color: white;
    }
    .user{
        color: green;
    }
    
</style>
<body>   
<div class="container">
    <h2 class="user"> GFG User Login</h2>
    <form action="{{ url_for('login') }}" method="post">
        {% if mesage is defined and mesage %}
            <div class="alert alert-warning"> <strong> {{ mesage }} 😄</strong></div>
        {% endif %}
        <br>
        <div class="form-group">
            <label class="ok">Email:</label>
         <input class="gfg" type="email" class="form-control" id="email" name="email" placeholder="Enter email" name="email">
        </div>
        <div class="form-group">
            <label class="pop"> <strong> Password:</strong></label>
           <input class="gfg" type="password" class="form-control" id="password" name="password" placeholder="Enter password" name="pswd">
        </div>   
        <button class="btn" type="submit" class="btn btn-primary">Login</button>
        <p class="bottom">Dont't have an account?  <a class="bottom" href="{{url_for('register')}}"> Register here</a></p>
    </form>
</div>
</body>
</html>

Выход:

имя пользователя и пароль, кото

login.html

user.html

После успешного входа в систему мы помещаем в эти файлы несколько строк кода для приветствия пользователя. Мы также добавляем вторую сессию. Код имени, который мы используем при регистрации, означает, что при входе в систему наше имя также будет отображаться на экране. Дополнительно на экране появится кнопка для выхода; нажав эту кнопку, мы можем выйти из системы и должны снова войти в систему.

HTML

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>User Account</title>
</head>
<style>
.gfg{
    font-size: 25px;
    color: red;
    font-style: italic;
}
</style>
<body>
<div class="container">
    <div class="row">   
        <h2>User Profile</h2>
    </div>
    <br>
    <div class="row">   
        Logged in : <strong class="gfg">  {{session.name}} 😄 </strong>| <a href="{{ url_for('logout') }}"> Logout</a>
    </div>
    <br><br>
    <div class="row">
        
        <h2>Welcome to the User profile page... 😄</h2>
    </div>       
</div>
</body>
</html>

Выход:

После успешного входа в систему мы поме

user.html

Настройка файла app.py

Шаг 1: Импортируйте всю библиотеку

Во-первых, код Python записывается в файл с именем app.py. Мы импортируем в этот файл все библиотеки, необходимые для запуска нашего приложения, подключения к MySQL и входа администратора из базы данных. После импорта повторного (регулярного выражения), которое будет считывать данные из нашей базы данных MySQL, база данных кода Python, MySQL DB, используется для создания данных для нашей базы данных. Мы инициализируем функцию фляги и генерируем секретный ключ для нашей фляги после импорта всех модулей. Затем в базу данных добавляются имя базы данных, адрес электронной почты и пароль.

Python3

# Import all important libraries
from flask import *
from flask_mysqldb import MySQL
import MySQLdb.cursors
import re
# intiallize first flask
app = Flask(__name__)
app.secret_key = 'GeeksForGeeks'
# Set MySQL data
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'user-table'
mysql = MySQL(app)

Шаг 2: Добавление функции входа и выхода

Затем мы разрабатываем функциональный login() и разрабатываем сеанс для входа и регистрации в системе, которая также получает наши данные из MySQL. Сообщение об успешной регистрации также появится на странице входа, когда мы успешно зарегистрируемся на странице регистрации. В этой функции мы передаем запрос в форму входа, вводя наше имя, пароль и адрес электронной почты, когда мы нажимаем «Ввод». Он автоматически сохранит в нашем PHPMyAdmin данные MySQL.

Python3

# Make login funtion for login and also make
# session for login and registration system
# and also fetch the data from MySQL
@app.route('/')
@app.route('/login', methods=['GET', 'POST'])
def login():
    mesage = ''
    if request.method == 'POST' and 'email' in
            request.form and 'password' in request.form:
        email = request.form['email']
        password = request.form['password']
        cursor = mysql.connection.cursor
                    (MySQLdb.cursors.DictCursor)
        cursor.execute(
        'SELECT * FROM user WHERE email = % s AND password = % s',
                      (email, password, ))
        user = cursor.fetchone()
        if user:
            session['loggedin'] = True
            session['userid'] = user['userid']
            session['name'] = user['name']
            session['email'] = user['email']
            mesage = 'Logged in successfully !'
            return render_template('user.html',
                                   mesage=mesage)
        else:
            mesage = 'Please enter correct email / password !'
    return render_template('login.html', mesage=mesage)
# Make function for logout session
@app.route('/logout')
def logout():
    session.pop('loggedin', None)
    session.pop('userid', None)
    session.pop('email', None)
    return redirect(url_for('login'))

Шаг 3: Добавление функции регистрации пользователя

На экране входа в систему мы можем войти, указав наш адрес электронной почты и пароль. Есть также больше мигающих уведомлений, таких как «Пользователь уже существует», если мы попытаемся зарегистрироваться снова, используя тот же адрес электронной почты. С одним и тем же адресом электронной почты мы можем создать две зарегистрированные учетные записи. Имя пользователя, которое мы указали на странице регистрации, также будет отображаться в профиле после успешного входа в систему. В этом случае мы набрали «GFG». «Добро пожаловать, GFG» появится после успешного входа в систему. Это проясняет весь код, а также его предполагаемое использование.

Python3

# Make a register session for registartion
# session ans also connect to Mysql to code for access
# login and for completing our login
# session and making some flahing massage for error
@app.route('/register', methods=['GET', 'POST'])
def register():
    mesage = ''
    if request.method == 'POST' and 'name' in
        request.form and 'password' in request.form
            and 'email' in request.form:
        userName = request.form['name']
        password = request.form['password']
        email = request.form['email']
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM user WHERE email = % s',
                       (email, ))
        account = cursor.fetchone()
        if account:
            mesage = 'Account already exists !'
        elif not re.match(r'[^@]+@[^@]+\.[^@]+', email):
            mesage = 'Invalid email address !'
        elif not userName or not password or not email:
            mesage = 'Please fill out the form !'
        else:
            cursor.execute(
                'INSERT INTO user VALUES (NULL, % s, % s, % s)',
              (userName, email, password, ))
            mysql.connection.commit()
            mesage = 'You have successfully registered !'
    elif request.method == 'POST':
        mesage = 'Please fill out the form !'
    return render_template('register.html', mesage=mesage)

Полный код

Python3

# Import all important libraries
from flask import *
from flask_mysqldb import MySQL
import MySQLdb.cursors
import re
# intiallize first flask
app = Flask(__name__)
app.secret_key = 'GeeksForGeeks'
# Set MySQL data
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'user-table'
mysql = MySQL(app)
@app.route('/')
@app.route('/login', methods=['GET', 'POST'])
def login():
    mesage = ''
    if request.method == 'POST' and 'email' in
    request.form and 'password' in request.form:
        email = request.form['email']
        password = request.form['password']
        cursor = mysql.connection.cursor
                (MySQLdb.cursors.DictCursor)
        cursor.execute(
            'SELECT * FROM user WHERE email = % s AND password = % s',
                  (email, password, ))
        user = cursor.fetchone()
        if user:
            session['loggedin'] = True
            session['userid'] = user['userid']
            session['name'] = user['name']
            session['email'] = user['email']
            mesage = 'Logged in successfully !'
            return render_template('user.html',
                                   mesage=mesage)
        else:
            mesage = 'Please enter correct email / password !'
    return render_template('login.html',
                           mesage=mesage)
# Make function for logout session
@app.route('/logout')
def logout():
    session.pop('loggedin', None)
    session.pop('userid', None)
    session.pop('email', None)
    return redirect(url_for('login'))
@app.route('/register', methods=['GET', 'POST'])
def register():
    mesage = ''
    if request.method == 'POST' and 'name' in request.form
            and 'password' in request.form and 'email' in request.form:
        userName = request.form['name']
        password = request.form['password']
        email = request.form['email']
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM user WHERE email = % s', (email, ))
        account = cursor.fetchone()
        if account:
            mesage = 'Account already exists !'
        elif not re.match(r'[^@]+@[^@]+\.[^@]+', email):
            mesage = 'Invalid email address !'
        elif not userName or not password or not email:
            mesage = 'Please fill out the form !'
        else:
            cursor.execute(
                'INSERT INTO user VALUES (NULL, % s, % s, % s)',
                      (userName, email, password ))
            mysql.connection.commit()
            mesage = 'You have successfully registered !'
    elif request.method == 'POST':
        mesage = 'Please fill out the form !'
    return render_template('register.html', mesage=mesage)
# run code in debug mode
if __name__ == "__main__":
    app.run(debug=True)

После написания всего откройте терминал и выполните следующую команду

python app.py

Выход:

авершите вывод и покажите, где мы сохраняем н

Завершите вывод и покажите, где мы сохраняем наш пароль и имя пользователя и как.

Вывод базы данных:

аблица базы дан

Таблица базы данных

После регистрации нескольких пользователей эти результаты будут отображаться в вашей базе данных. Посмотрев видео, вы сможете понять, как имя пользователя будет отображаться на экране и как несколько пользователей могут зарегистрироваться и войти в систему.

После регистрации нескольких пользовател

Сохранить/сохранить имя пользователя и пароль

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