Stack Công Nghệ và Môi Trường Phát Triển
Dự án này được phát triển bằng ngôn ngữ Python. Các thao tác mã chủ yếu được thực hiện trong PyCharm, sử dụng MySQL để lưu trữ bảng dữ liệu và thông tin hệ thống, giúp thao tác dữ liệu trở nên thuận tiện. Hệ thống được xây dựng trên nền tảng WEB.
- Ngôn ngữ phát triển: Python
- Framework: Flask (và có thể là Django)
- Phiên bản Python: 3.7.7
- Cơ sở dữ liệu: MySQL
- Công cụ cơ sở dữ liệu: Navicat
- Phần mềm phát triển: PyCharm
- Trình duyệt: Google Chrome
Hệ thống được phát triển bằng ngôn ngữ Python, sử dụng MySQL làm cơ sở dữ liệu backend, và áp dụng framework DJANGO/Flask để phát triển.
Mục Tiêu Đạt Được
- Học hỏi kiến thức và quy trình làm việc liên quan đến kỹ thuật phát triển và thiết kế hệ thống;
- Học sử dụng công cụ PYCHARM để chỉnh sửa code frontend và backend;
- Học sử dụng framework DJANGO/Flask để triển khai phát triển hệ thống;
- Nắm vững cách sử dụng MySQL để tạo và chỉnh sửa cơ sở dữ liệu.
Thiết Kế Hệ Thống
Nghiên cứu thu thập dữ liệu và trực quan hóa frontend, làm quen với framework Django, cú pháp thiết kế lập trình Python. Vấn đề cần giải quyết là thiết kế một giao diện frontend đơn giản và dễ thao tác, giải quyết mối quan hệ giữa dữ liệu, điều chỉnh cấu trúc bảng dữ liệu.
Hệ thống áp dụng phương pháp thiết kế hướng đối tượng, đây là phương pháp thiết kế chương trình dựa trên phân tích cấu trúc với trung tâm là dữ liệu, ý tưởng chính là đóng gói dữ liệu và các thao tác xử lý dữ liệu này vào một cấu trúc dữ liệu gọi là lớp. Phương pháp này mô hình hóa thế giới thực một cách sát thực và hợp lý, phù hợp hơn với tư duy nhận thức của con người về thế giới.
Nguyên lý cơ bản: Lấy phương pháp kỹ thuật phần mềm làm lý luận hướng dẫn, thực hiện nghiêm ngặt 8 giai đoạn của vòng đời phần mềm: xác định vấn đề, nghiên cứu tính khả thi, phân tích yêu cầu, thiết kế tổng thể, thiết kế chi tiết, mã hóa và kiểm thử đơn vị, kiểm thử tổng hợp và bảo trì phần mềm.
Thiết kế Cơ sở dữ liệu
Thiết kế cấu trúc cơ sở dữ liệu hiệu quả, bao gồm việc thiết kế các bảng dữ liệu như thông tin người dùng, thông tin xe, thông tin đơn hàng, và mối quan hệ liên kết giữa các bảng.
Thiết kế Kiến trúc Hệ thống
Thiết kế kiến trúc tổng thể của hệ thống, bao gồm thiết kế trang frontend, thiết kế backend, thiết kế giao diện API.
Thiết kế Trải nghiệm Người dùng
Thiết kế giao diện thân thiện với người dùng, nâng cao trải nghiệm, bao gồm thiết kế quy trình các thao tác như đăng ký người dùng.
Thiết kế Trang Frontend
Sử dụng framework web Python như Django hoặc Flask để nhanh chóng phát triển các trang frontend thân thiện với người dùng.
Với sự phát triển nhanh chóng của khoa học dữ liệu, các công nghệ mới nổi như học máy, trí tuệ nhân tạo đã极大地便利 hóa cuộc sống của con người. Ngày càng nhiều ứng dụng liên quan đến dữ liệu lớn, và các thuộc tính của dữ liệu lớn này, bao gồm số lượng, tốc độ, đa dạng, v.v., đều thể hiện sự phức tạp ngày càng tăng của dữ liệu lớn. Dự án này nhằm giải quyết vấn đề nguồn dữ liệu mà khoa học dữ liệu phụ thuộc vào, giúp các nhà khoa học dữ liệu có được nhiều dữ liệu có giá trị hơn.
Giải Pháp Đề Xuất
- Sử dụng Navicat hoặc các công cụ khác, tạo cơ sở dữ liệu có tên tương ứng trong mysql và nhập tệp sql của dự án;
- Sử dụng PyCharm để nhập dự án, sửa đổi cấu hình và chạy dự án;
- Thay đổi cấu hình cơ sở dữ liệu trong tệp cấu hình config.ini của dự án thành cấu hình của riêng bạn, sau đó chạy;
- Hệ thống chọn ngôn ngữ lập trình. Pymysql là một thư viện Python đóng gói trình điều khiển MySQL, cho phép Python kết nối đến MySQL. Python có quy chuẩn giao tiếp thống nhất để truy cập cơ sở dữ liệu (Python DB-API), ngăn ngừa việc sử dụng các chương trình giao diện bị rối loạn do khác biệt về công nghệ cơ sở dữ liệu khi sử dụng các cơ sở dữ liệu khác nhau. Thông qua việc thiết kế hệ thống này, có thể nâng cao khả năng lập trình, củng cố sự hiểu biết và vận dụng kiến thức đã học.
Môi trường Chạy
- Môi trường chạy: python3.7/python3.8
- Môi trường IDE: pycharm + mysql5.7/8.0+
- Công cụ cơ sở dữ liệu: Navicat 11
- Môi trường phần cứng: windows11/10, RAM 8GB trở lên
- Cơ sở dữ liệu: MySql phiên bản 5.7/8.0+
Sau khi chạy thành công, trong trình duyệt, nhập: http://localhost:8080/tên_dự_án
Mã Nguồn Flask Core
import os
from flask import Blueprint
from utilities.file_validator import is_python_file
core_bp = Blueprint('core', __name__, static_folder='static')
import_statement = 'from . import '
view_modules = set()
excluded_files = [
"__init__.py"
]
directory = os.path.join(os.getcwd(), "api/core")
directory = directory.replace("test_suite/", '') if "test_suite/" in directory else directory
for file_name in os.listdir(directory):
if file_name not in excluded_files and is_python_file(file_name):
module_name = file_name.split(".", 1)[0]
view_modules.add(module_name)
import_statement += ','.join(view_modules)
print(import_statement)
exec(import_statement)
Mã Nguồn Django Core
# coding:utf-8
__author__ = "developer"
from django.http import JsonResponse
from .user_models import UserModel
from utility.response_codes import *
from utility.auth_handler import Auth
import utility.messages as msg
def user_login(request):
if request.method in ["POST", "GET"]:
response_data = {'code': success_code, "msg": msg.success_message}
request_data = request.session.get("request_data")
if request_data.get('user_type')!=None:
del request_data['user_type']
user_data = UserModel.get_by_params(UserModel, UserModel, request_data)
if not user_data:
response_data['code'] = authentication_error_code
response_data['msg'] = msg.authentication_error_message
return JsonResponse(response_data)
request_data['id'] = user_data[0].get('id')
return Auth.authenticate(Auth, UserModel, request_data)
def user_registration(request):
if request.method in ["POST", "GET"]:
response_data = {'code': success_code, "msg": msg.success_message}
request_data = request.session.get("request_data")
error = UserModel.create_by_request(UserModel, UserModel, request_data)
if error != None:
response_data['code'] = operation_error_code
response_data['msg'] = error
return JsonResponse(response_data)
Giải thích Cấu trúc Dự án Django
Cấu trúc dự án ban đầu của chúng tôi bao gồm năm tệp:
- manage.py: Phím tắt cho công cụ dòng lệnh django-admin. Nó được sử dụng để chạy các lệnh quản lý liên quan đến dự án của chúng tôi. Chúng tôi sẽ sử dụng nó để chạy máy chủ phát triển, chạy kiểm thử, tạo di chuyển, v.v.
- __init__.py: Tệp trống này cho biết python rằng thư mục này là một gói python.
- settings.py: Tệp này chứa tất cả cấu hình của dự án. Trong tương lai, chúng tôi sẽ thường xuyên đề cập đến tệp này!
- urls.py: Tệp này chịu trách nhiệm ánh xạ tuyến đường và đường dẫn trong dự án của chúng tôi. Ví dụ, nếu bạn muốn hiển thị một số nội dung khi truy cập URL /about/, bạn phải ánh xạ nó ở đây trước.
- wsgi.py: Tệp này là giao diện cổng đơn giản để triển khai. Bạn có thể tạm thời không cần quan tâm đến nội dung của nó, cứ để nó ở đó là được.
Django đi kèm một máy chủ web đơn giản. Rất tiện lợi trong quá trình phát triển, vì vậy chúng ta không cần cài đặt bất kỳ phần mềm nào khác để chạy dự án cục bộ. Chúng ta có thể kiểm tra nó bằng cách thực thi lệnh:
python manage.py runserver
cung_cap/ <-- Thư mục cấp cao
|-- cung_cap/ <-- Thư mục dự án Django | |-- cung_cap/ | | |-- __init__.py | | |-- settings.py | | |-- urls.py | | |-- wsgi.py | +- manage.py +- virtual_env/ <-- Thư mục môi trường ảo
Phân tích Tính Khả thi
Django được viết bằng Python, là framework ứng dụng web mã nguồn mở. Áp dụng mô hình framework (Model M, View V và Template T). Framework này được đặt theo tên nghệ sĩ guitar jazz Django Reinhardt người Bỉ. Các thành phần chính của kiến trúc này như sau:
- Ánh xạ quan hệ đối tượng để tạo mô hình.
- Mục tiêu cuối cùng là thiết kế một giao diện quản lý hoàn hảo cho người dùng.
- Là giải pháp thiết kế URL phổ biến nhất hiện nay.
- Ngôn ngữ mẫu thân thiện nhất với nhà thiết kế.
- Hệ thống lưu đệm.
Flask cung cấp tính linh hoạt và đơn giản hơn, phù hợp với các dự án nhỏ và microservices. Django cung cấp nhiều tính năng tích hợp hơn, phù hợp với các dự án lớn. Flask cho phép nhà phát triển kiểm soát nhiều hơn các thành phần của họ, trong khi Django tuân theo nguyên tắc "sẵn sàng để sử dụng ngay".
Flask có khả năng tùy chỉnh cao, người dùng có thể thêm các chức năng tương ứng theo nhu cầu của mình, trong khi vẫn giữ cho các chức năng cốt lõi đơn giản, đồng thời thực hiện sự phong phú và mở rộng chức năng, thư viện plugin mạnh mẽ của nó có thể cho phép người dùng cá nhân hóa trang web, phát triển các trang web có chức năng mạnh mẽ.
- Tính khả thi kinh tế: Trang web này dựa trên Django/Flask và MySQL, sử dụng nền tảng công nghệ mã nguồn mở nên chi phí kinh tế thấp, người dùng có thể xem trực tiếp mà không cần nhiều chi phí.
- Tính khả thi kỹ thuật: Hệ thống dựa trên python và js dễ bảo trì, đồng thời dựa trên trình duyệt hoạt động có lợi thế đa nền tảng, framework Django/Flask tương đối trưởng thành giúp xây dựng nhanh và dễ dàng cập nhật nhanh, MySQL dễ học và ứng dụng rộng rãi.
- Tính khả thi vận hành: Hệ thống dựa trên HTML trực quan và đơn giản, người dùng chỉ cần nhấp để thực hiện thao tác, vận hành rất tiện lợi và ngắn gọn.
- Phân tích yếu tố xã hội: Hệ thống này được thiết kế để giải quyết "điểm đau" của người dùng, vận hành được đơn giản hóa đáng kể, đồng thời thị trường xem phim trực tuyến rộng lớn, phù hợp với nhu cầu thực tế của đông đảo người dùng.