Python-Flask – Tạo form submit, lưu vào database.

Tạo form với wtf-form. Thao tác trên Database Postgres với SqlAlchemy .
1.       Cài đặt Flask. (máy phải cài đặt Python)
3.       Kết nối Postgres với Python Flask web
Trước tiên cài đặt các công cụ sau: Flask-SQLAlchemy (Flask extension that provides SQLAlchemy support), Psycopg2 (a Python adapter for Postgres)

$ pip install psycopg2 Flask-SQLAlchemy

Trong hello.py

# SQL Alchemy
from flask_sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))

#SQLALchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://< user_name>:<password>@localhost/<database_name>'
db = SQLAlchemy(app)


Trong đó, khai báo <user_name>, <password>,<database_name> theo đúng cấu hình mà bạn đã cài đặt trong PgAdmin.
Khai báo các biến. Trong ví dụ này ta cần 2 biến username và email để lưu vào database, khai báo như sau:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

4.       Tạo form
Phần này sử dụng công cụ flask_wtf để tạo form.
Cài đặt flask_wtf. Mở CMD và đánh lệnh sau:
$ pip install Flask-WTF

Sau khi cài xong, mở hello.py

# Web form
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

Chúng ta sẽ tạo Form bao gồm 2 input: name và email, khai báo như sau:

class MyForm(FlaskForm):
    name = StringField('name', validators=[DataRequired()])
    email = StringField('email', validators=[DataRequired()])

Trong thư mục templates, tạo file ‘submit.html’ (để hiễn thị form):

<form method="POST" action="{{ url_for('submit') }}">
    {{ form.csrf_token }}
    {{ form.name.label }} {{ form.name(size=80) }}
    {{ form.email.label}} {{ form.email(size=120)}}
    <input type="submit" value="Submit">
</form>

Trong thư mục templates, tạo tiếp file ‘success.html’ (để redirect sau khi submit thành công):

<div class="page-header">
<h1>Success!</h1>
</div>

Để hiễn thị form với địa chỉ ‘/submit’, trong hello.py.

@app.route('/submit', methods=['GET','POST'])
def submit():
    form = MyForm()
    if form.validate_on_submit():
        user=User(request.form['name'],request.form['email'])
        db.session.add(user)
        db.session.commit()
        return redirect('/success')
    return render_template('submit.html',form=form)

@app.route('/success')
def success():
    return render_template('success.html')


Như trên, sau khi bấm nút Submit trên form, thông tin user sẽ được lưu vào database.

5.       Demo
Truy cập localhost:8080/submit



Sau đó nhập username và email -> bấm submit. Web sẽ lưu vào database và redirect qua trang success.html

Kiểm tra dữ liệu trong pgAdmin
Tìm đến mục Schemas/Tables/user (R_Click user chọn View/Edit) để xem dữ liệu đã được lưu vào.

Nhận xét

Bài đăng phổ biến từ blog này

SIM800L thực hiện giao thức HTTP GET thông qua lệnh AT Command

Sử dụng Javascript MQTT Client với Websockets