CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI 1.1 Tổng quan Hiện nay, với sự phát triển của công nghệ, thương mại điện tử đang ngày càng trở nên phổ biến. Không chỉ có mua bán các sản phẩm tiêu dùng bình thường mà hiện nay nhu cầu mua bán, giao dịch bất động sản cũng trở nên rất sôi nổi trên mạng Internet. Chính vì thế mà ngày càng có nhiều người môi giới hoặc ngay cả chủ sở hữu cũng đang tìm cách rao bán bất động sản thông qua các trang mạng.
PRP được phát triển với mong muốn là tạo ra một môi trường mở, mà người dùng (môi giới, chủ sở hữu) có thể rao bán, quảng cáo bất động sản của mình đến những người quan tâm. Hệ thống PRP vừa cung cấp các dịch vụ đăng tin, theo dõi bài đăng bất động sản, vừa có dịch vụ quản lý, kiểm soát dữ liệu từ khách hàng. Đối với người môi giới, sở hữu bất động sản: Đăng ký đăng tin Quản lý bài đăng của mình Thanh toán khi đăng ký đăng tin Gia hạn bài đăng Nhận email thông báo về yêu cầu liên hệ, nhắc gia hạn tin Đối với người tìm kiếm bất động sản: Đăng ký, đăng nhập Xem thông tin từng bài đăng bất động sản Tìm kiếm bài đăng phù hợp Gửi yêu cầu liên hệ đến chủ bài đăng Theo dõi bài viết yêu thích Theo dõi, cập nhật thông tin cá nhân Tìm kiếm tin tức về bất động sản Đối với quản trị viên của hệ thống: Quản trị nội dung của hệ thống như tin tức, bất động sản, bài đăng Xem thống kê của hệ thống, xem lịch sử thanh toán trên hệ thống 1.2 Nội dung thực hiện Một số nội dung đã thực hiện trong quá trình hoàn thành hệ thống: Nghiên cứu các hệ thống về đăng tin bất động sản Nghiên cứu công nghệ và các nền tảng cần có để hiện thực hệ thống. Xây dựng giao diện trang đăng tin và trang quản trị.
Hiện thực và kiểm thử hệ thống Triển khai và đánh giá hệ thống đã hiện thực. Viết báo cáo về đề tài đã thực hiện. GIỚI THIỆU ĐỀ TÀI 1.1 Ý nghĩa thực tiễn PRP được ra đời nhằm mục đích hướng sự tiện lợi cho các nhà môi giới và người tìm kiếm bất động sản: Đáp ứng được nhu cầu xây dựng một hệ thống đăng tin, quản lý bài đăng Giúp các nhà môi giới có thể quảng bá bất động sản của mình quản lý đến khách hàng nhanh hơn. Giúp doanh nghiệp dễ dàng quản trị hệ thống, dữ liệu về bài đăng, khách hàng.2 Ý nghĩa khoa học, kỹ thuật Xây dựng hệ thống PRP cũng là cơ hội để nhóm có thể tìm hiểu những vấn đề liên quan đến bất động sản.
Để xây dựng hệ thống, nhóm đã tổng hợp, áp dụng các kiến thức đã học về cơ sở dữ liệu, kiến trúc hệ thống, các kỹ thuật thiết kế phân tích hệ thống, các kỹ thuật lập trình ứng dụng web, tìm hiểu và làm việc với các công nghệ phổ biến được sử dụng hiện nay như framework Backend Django, thư viện Front-end ReactJS, dịch vụ AWS,. Đây cũng dịp để các thành viên của nhóm nâng cao khả năng tự học, tự tìm hiểu, nghiên cứu, kỹ năng làm việc nhóm và giải quyết các vấn đề phát sinh trong quá trình tìm hiểu, hiện thực, đánh giá hệ thống. KIẾN THỨC NỀN TẢNG CHƯƠNG 2. KIẾN THỨC NỀN TẢNG 2.1 Mô hình Model – View – Controller (MVC) Mô hình Model - View - Controller hay còn được gọi là mô hình MVC là mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính.
MVC chia thành ba bộ phận chính được kết nối với nhau. [1] Model (M) là thành phần có chức năng lưu trữ dữ liệu được sử dụng bởi chương trình. Đây là nơi chứa các nghiệp vụ tương tác với dữ liệu hay cơ sở dữ liệu; nó bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn, xử lý dữ liệu. View(V) là thành phần giao diện dành cho người dùng, nơi chứa những giao diện như nút bấm, khung nhập, menu, hình ảnh,.Nó đảm nhận nhiệm vụ hiển thị thông tin, dữ liệu cho người dùng tương tác với hệ thống.
Nó sẽ gồm những class/function để xử lý nhiều nghiệp vụ logic, giúp lấy đúng dữ liệu nhờ những nghiệp vụ lớp Model(M) cung cấp và hiển thị thông tin đó ra cho người dùng thông qua View(V).1 Mô hình MVC Luồng xử lý trong MVC: Người dùng sử dụng một trình duyệt web bất kỳ (Firefox,Chrome,.) để truy cập vào Website của chúng ta. Sau đó gửi yêu cầu kèm theo dữ liệu để Controller xử lý. KIẾN THỨC NỀN TẢNG Sau khi nhận được yêu cầu thì Controller sẽ kiểm tra xem yêu cầu đó có cần dữ liệu từ Model hay không. Nếu có, nó sẽ điều hướng đến các thao tác xử lý tại Model, sau đó nhận lại dữ liệu từ Model trả về.
Khi đã nắm được dữ liệu trả về từ Model thì Controller sẽ xử lý tập dữ liệu đó và trả ra View để hiển thị. Khi nhận được dữ liệu trả ra từ Controller, View sẽ xây dựng lại các thành phần hiển thị và trả về nội dung giao diện. Controller sẽ đưa kết quả này lên trình duyệt web của người dùng. Trình duyệt web nhận giá trị trả về và hiển thị lên cho người dùng.
Đây cũng là bước kết thúc cho luồng xử lý trong mô hình MVC. Ưu nhược điểm của MVC Ưu điểm Tiết kiệm băng thông vì không sử dụng kỹ thuật ViewState Giúp phát triển ứng dụng nhanh hơn, có bố cục rõ ràng và riêng biệt cũng giúp cho việc kiểm tra lỗi phần mềm đơn giản. Phiên bản mới nhất của MVC hỗ trợ responsive website mặc định và các mẫu cho mobile. Chúng ta có thể tạo công cụ View của riêng mình một cách đơn giản và nhanh chóng hơn.
Nhược điểm Không phù hợp cho các dự án nhỏ 2.2 Restful API REST (Representational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiến trúc để viết API và sử dụng phương thức HTTP đơn giản để tạo ra giao tiếp giữa các thiết bị. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, PUT đến một URL để xử lý dữ liệu. API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác. API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML.
RESTful API là một tiêu chuẩn dùng cho việc thiết kế API cho các ứng dụng Web để quản lý các nguồn tài nguyên trên server. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để giao tiếp giữa ứng dụng trên các các nền tảng(web, mobile,. [2] REST hoạt động chủ yếu dựa vào giao thức HTTP. Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng.
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa. GET: Trả về một resource hoặc một danh sách resource. KIẾN THỨC NỀN TẢNG POST: Tạo mới một resource. PUT: Cập nhật thông tin cho resource.
DELETE: Xóa một resource. RESTful API không sử dụng session và cookie, nó sử dụng một access_token với mỗi request. Dữ liệu trả về thường có cấu trúc như sau: 200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE. 201 Created – Trả về khi một resource vừa được tạo thành công.
204 No Content – Trả về khi resource xoá thành công. 304 Not Modified – Client có thể sử dụng dữ liệu cache. 400 Bad Request – Request không hợp lệ 401 Unauthorized – Request cần có auth. 403 Forbidden – Bị từ chối, không cho phép.
404 Not Found – Không tìm thấy resource từ URI 405 Method Not Allowed – Phương thức không cho phép. 410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ. 415 Unsupported Media Type – Không hỗ trợ kiểu resource này. 422 Unprocessable Entity – Dữ liệu không được xác thực 429 Too Many Requests – Request bị từ chối do bị giới hạn Việc sử dụng RESTful API cần có một tài liệu ghi lại cấu trúc API.
Mỗi một API cần được miêu tả đầy đủ về biến được gửi, kiểu dữ liệu, bắt buộc gửi giá trị nào đó hay không, đưa ra một cấu trúc dữ liệu ban đầu. Luôn sử dụng version để khi bạn cần nâng cấp API mà vẫn hỗ trợ các API cũ.2 Công nghệ nền tảng 2.1 Front-end ReactJS ReactJS là một thư viện JavaScript mã nguồn mở được phát triển bởi Facebook và cộng đồng những nhà lập trình nhằm hướng đến xây dựng giao diện người dùng một cách thuận tiện [3]. ReactJS đang nổi lên trong những năm gần đây theo xu hướng Single Page Application. ReactJS hỗ trợ xây dựng những thành phần giao diện (components) có tính tương tác và tái sử dụng cao.
Chính vì vậy mà những website khi sử dụng ReactJS chạy mượt, nhanh, có khả năng mở rộng cao và cũng không quá khó để hiện thực. React cho phép nhúng code HTML, CSS trong code JavaScript nhờ vào JSX, giúp cho lập trình viên có thể dễ dàng lồng ghép HTML, CSS vào trong JavaScript một cách tự nhiên hơn. Ngoài ra, còn thể sử dụng React để render dữ liệu từ người dùng. Sở dĩ React nổi lên gần đây bởi vì một số ưu điểm của nó như: Dễ dàng nhúng HTML, CSS vào trong React component bởi JSX.
KIẾN THỨC NỀN TẢNG Xây dựng giao diện từ các component, và React cũng cho phép tái sử dụng các component này, giúp việc rút gọn thời gian lập trình và dễ dàng quản lý các component hơn. Hiệu suất tốt hơn với Virtual DOM. React cho phép xây dựng các Virtual DOM, khi có sự thay đổi trong DOM thực tế thì Virtual DOM sẽ thay đổi ngay lập tức.2 Back-end Django Django là một web framework bậc cao khá nổi tiếng được viết bằng ngôn ngữ bậc cao Python. Nó là một framework có đầy đủ các module, thư viện phục vụ cho phát triển web, nên bạn chỉ cần tập trung vào việc viết ứng dụng mà không cần phải tốn công tạo ra cái mới.
Nó là miễn phí và mã nguồn mở, có một cộng đồng phát triển lớn và bộ tài liệu đầy đủ và chi tiết từ những nhà phát triển có kinh nghiệm.