Hướng dẫn python and mysql project
Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article) Show Trong loạt bài này, chúng ta sẽ sử dụng Python, Flask và MySQL để tạo ra một ứng dụng web đơn giản từ đầu. Nó sẽ là một ứng dụng danh sách điều ước đơn giản, nơi người dùng có thể đăng ký, đăng nhập và tạo danh sách điều ước của họ. Hướng dẫn này giả định rằng bạn có một số kiến thức cơ bản về ngôn ngữ lập trình Giới thiệu Python FlaskFlask là một framework Python để tạo các ứng dụng web. Theo trang web chính thức, Flask là một microframework cho Python dựa trên Werkzeug, Jinja 2 và các ý tưởng tốt. Khi chúng ta nghĩ về Python, theo thói quen, framework thật sự mà chúng ta nghĩ đến là framework Django. Nhưng từ góc độ của người mới bắt đầu đến với Python, Flask dễ dàng để làm quen hơn, so với Django. Thiết lập FlaskThiết lập Flask là khá đơn giản và nhanh chóng. Với trình quản lí gói pip install flask Một khi bạn hoàn tất cài đặt Flask, hãy tạo một thư mục được gọi là from flask import Flask app = Flask(__name__) Bây giờ xác định tuyến (route) cơ bản @app.route("/") def main(): return "Welcome!" Tiếp theo, kiểm tra xem tập tin thực thi có là chương trình chính hay không và chạy ứng dụng: if __name__ == "__main__": app.run() Lưu các thay đổi và thực thi python app.py Trỏ trình duyệt của bạn đến http://localhost:5000/ và bạn sẽ thấy thông điệp chào mừng. Tạo một Trang chủĐầu tiên, khi ứng dụng chạy chúng ta nên hiển thị một trang chủ với các phần tử trong danh sách mong ước mới nhất được thêm vào bởi người dùng. Vì vậy, hãy thêm trang chủ của chúng ta vào thư mục application. Flask tìm kiếm các tập tin template bên trong thư mục
Mở
from flask import Flask, render_template Sửa đổi phương thức chính để trả về tập tin template đã được kết xuất. def main(): return render_template('index.html') Lưu các thay đổi và khởi động lại máy chủ. Trỏ trình duyệt của bạn đến http://localhost:5000/ và bạn sẽ thấy màn hình dưới đây: Tạo một Trang đăng kýBước 1: Thiết lập Cơ sở Dữ liệuChúng ta sẽ sử dụng mysql -u Nhập mật khẩu cần thiết và khi đã đăng nhập, thực thi lệnh sau để tạo ra cơ sở dữ liệu: CREATE DATABASE BucketList; Một khi cơ sở dữ liệu đã
được tạo ra, tạo ra một bảng gọi là CREATE TABLE `BucketList`.`tbl_user` ( `user_id` BIGINT NULL AUTO_INCREMENT, `user_name` VARCHAR(45) NULL, `user_username` VARCHAR(45) NULL, `user_password` VARCHAR(45) NULL, PRIMARY KEY (`user_id`)); Chúng ta sẽ sử dụng các Khi tạo một thủ tục lưu trữ để tạo người dùng trong bảng DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createUser`( IN p_name VARCHAR(20), IN p_username VARCHAR(20), IN p_password VARCHAR(20) ) BEGIN if ( select exists (select 1 from tbl_user where user_username = p_username) ) THEN select 'Username Exists !!'; ELSE insert into tbl_user ( user_name, user_username, user_password ) values ( p_name, p_username, p_password ); END IF; END$$ DELIMITER ; Bước 2: Tạo một Giao diện Đăng kýĐiều hướng đến thư mục
Đồng thời thêm body { padding-top: 40px; padding-bottom: 40px; } .form-signin { max-width: 330px; padding: 15px; margin: 0 auto; } .form-signin .form-signin-heading, .form-signin .checkbox { margin-bottom: 10px; } .form-signin .checkbox { font-weight: normal; } .form-signin .form-control { position: relative; height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 10px; font-size: 16px; } .form-signin .form-control:focus { z-index: 2; } .form-signin input[type="email"] { margin-bottom: -1px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .form-signin input[type="password"] { margin-bottom: 10px; border-top-left-radius: 0; border-top-right-radius: 0; } Trong @app.route('/showSignUp') def showSignUp(): return render_template('signup.html') Lưu các thay đổi và khởi động lại máy chủ. Bấm vào nút Sign Up trên trang chủ và bạn sẽ có trang đăng ký như dưới đây: Bước 3: Cài đặt một Phương thức Đăng kýTiếp theo, chúng ta cần một phương thức bên phía máy chủ để cho giao diện người dùng tương tác với cơ sở dữ liệu MySQL. Vì vậy, hãy chuyển đến @app.route('/signUp') def signUp(): # create user code will be here !! Chúng ta sẽ sử dụng jQuery AJAX để gửi dữ liệu đăng ký của phương thức @app.route('/signUp',methods=['POST']) def signUp(): # create user code will be here !! Để đọc các giá trị gởi đi chúng ta cần import from flask import Flask, render_template, request Sử dụng @app.route('/signUp',methods=['POST']) def signUp(): # read the posted values from the UI _name = request.form['inputName'] _email = request.form['inputEmail'] _password = request.form['inputPassword'] Sau khi các giá trị đã được đọc, chúng ta sẽ chỉ cần kiểm tra xem chúng có hợp lệ hay không và lúc này chỉ cần trả về một thông điệp đơn giản: @app.route('/signUp',methods=['POST']) def signUp(): # read the posted values from the UI _name = request.form['inputName'] _email = request.form['inputEmail'] _password = request.form['inputPassword'] # validate the received values if _name and _email and _password: return json.dumps({'html':'All fields good !!'}) else: return json.dumps({'html':'Enter the required fields'}) Đồng thời import from flask import Flask, render_template, json, request Bước 4: Tạo một Yêu cầu Đăng kýChúng ta sẽ sử dụng jQuery AJAX để gửi yêu cầu đăng ký đến phương thức của Python. Tải về và đặt Vì vậy, hãy gắn sự kiện click vào nút Sign Up như sau: $(function() { $('#btnSignUp').click(function() { $.ajax({ url: '/signUp', data: $('form').serialize(), type: 'POST', success: function(response) { console.log(response); }, error: function(error) { console.log(error); } }); }); }); Lưu tất cả các thay đổi và khởi động lại máy chủ. Từ trang Sign Up, điền các chi tiết và nhấp vào Sign Up. Kiểm tra giao diện console của trình duyệt và bạn sẽ có được thông điệp sau đây: {"html": "All fields good !!"} Bước 5: Gọi Thủ tục Lưu trữ của MySQLMột khi chúng ta có Để kết nối với
MySQL, chúng ta sẽ sử dụng Flask-MySQL, nó là một extension (chức năng mở rộng) của Flask. Để bắt đầu với pip install flask-mysql Import MySQL bên trong from flask.ext.mysql import MySQL Trước đó, chúng ta đã định nghĩa ứng dụng của chúng ta như sau: app = Flask(__name__) Cùng với đó hãy bao gồm các cấu hình MySQL sau đây: mysql = MySQL() # MySQL configurations app.config['MYSQL_DATABASE_USER'] = 'jay' app.config['MYSQL_DATABASE_PASSWORD'] = 'jay' app.config['MYSQL_DATABASE_DB'] = 'BucketList' app.config['MYSQL_DATABASE_HOST'] = 'localhost' mysql.init_app(app) Trước tiên, hãy tạo kết nối MySQL: conn = mysql.connect() Sau khi kết nối được tạo ra, chúng ta sẽ yêu cầu một cursor = conn.cursor() Trước khi gọi thủ tục lưu trữ, hãy làm cho mật khẩu của chúng ta an toàn bằng cách sử dụng một helper được cung cấp bởi Werkzeug. Import mô-đun vào from werkzeug import generate_password_hash, check_password_hash Sử dụng mô-đun salting để tạo mật khẩu băm. _hashed_password = generate_password_hash(_password) Bây giờ, hãy gọi thủ tục cursor.callproc('sp_createUser',(_name,_email,_hashed_password)) Nếu thủ tục được thực thi thành công, thì chúng ta sẽ áp dụng các thay đổi và trả về thông điệp thành công. data = cursor.fetchall() if len(data) is 0: conn.commit() return json.dumps({'message':'User created successfully !'}) else: return json.dumps({'error':str(data[0])}) Lưu các thay đổi và khởi động lại máy chủ. Đi đến trang đăng ký và nhập {"message": "User created successfully !"} Tóm tắtTrong hướng dẫn này, chúng ta đã được làm quen
với việc tạo ra một ứng dụng web bằng Mã nguồn từ hướng dẫn này có sẵn trên GitHub. Hãy cho chúng tôi biết những suy nghĩ của bạn trong phần bình luận dưới đây nhé! |