Xem Nhiều 4/2024 # Tạo Một Web App Và Xử Lý Khi Người Dùng Yêu Cầu Truy Cập Trong Python Django # Top 1 Yêu Thích

Ghi chú

Nội dung bài viết bạn đang xem được update từ tháng 06/2024. Vì vậy sẽ có đôi chút khác biệt giữ VIDEO và NỘI DUNG BÀI VIẾT.

Chúng ta sẽ có nhiều cập nhập hơn về cả bài viết lẫn video trong thời gian tới. Nhớ like/ share hoặc đánh giá 5 sao để Kteam có động lực nhé!

Cảm ơn các bạn!

Dẫn nhập

Ở bài trước, chúng ta đã tìm hiểu cách TẠO PROJECT PYTHON DJANGO .Trong bài hôm nay, Kteam sẽ hướng dẫn cho các bạn cách Tạo 1 Web App và xử lý khi người dùng yêu cầu truy cập trong Python Django.

Nội dung

Để theo dõi bài này tốt nhất, bạn nên xem có kiến thức về:

Bài này sẽ giới thiệu những nội dung sau:

Web App là gì? Cách tạo ra Web App

Cách thức hoạt động của web

Cách viết testcase đơn giản

Web App là gì? Cách tạo ra Web App

Web App là nơi để tạo ra những trang web nằm trong toàn bộ hệ thống website, trong 1 dự án thì ta cần chia ra nhiều web app nhằm dễ quản lý và phân chia công việc.

Ví dụ: Bạn sẽ tạo ra 1 app để quản lý những tác vụ đăng vụ đăng nhập, đăng xuất riêng; 1 app quản lý về trang chủ,… Và sau khi hoàn thành các app, chúng ta sẽ có một website hoàn chỉnh.

Để tạo 1 Web App. Hãy gõ lệnh này sau trong CMD:

Ta sẽ thấy sẽ xuất hiện folder trên màn hình

Ta vào mục PythonWeb, mở file chúng tôi . Ở phần khai báo INSTALLED_APPS, tao ghi thêm tên App vào trong:

Để cập nhật cho phần settings. Ta sẽ chạy lệnh sau:

python chúng tôi migrate

Nếu ta chạy migrate project lần đầu. Thì project Django sẽ tạo một số bảng cho chức năng user, admin cho database hiện tại. Bản chất Django hỗ trợ cho chúng ta hệ thống user, admin để thuận tiện cho việc phát triển trang web nhanh hơn. Ở các bài sau thì Kteam sẽ giải thích chi tiết hơn.

Cách thức hoạt động của web

Bây giờ Kteam sẽ nói cho các bạn cách hoạt động của web như sau:

Phía Client chính là máy tính của người dùng, khi người dùng gửi 1 request bằng giao thức HTTP cho phía Server. Sau khi Server nhận được request, server sẽ phân tích xem người dùng yêu cầu thứ gì rồi sẽ response về cho máy người dùng.

Ví dụ: khi bạn đi vào địa chỉ chúng tôi là trình duyệt của bạn đang request đến server là ‘tôi muốn vào trang tìm kiếm google’, khi web server của google nhận được, google sẽ trả cho bạn response có html của trang tìm kiếm google, trình duyệt sẽ chuyển html sang giao diện cho bạn thấy (Nó giống như bạn tập design html và mở bằng trình duyệt vậy)

Ở Django, chúng ta sẽ viết ra các hàm để xử lý những request của client gửi đến cho web server của mình. Bây giờ ta sẽ viết 1 hàm xử lý ở file chúng tôi trong app home.

Đầu tiên mình sẽ import HttpResponse từ thư viện, sau đó sẽ viết 1 hàm index có tham số request (chính là request người dùng gửi về). Tại hàm này, mình tạo một instance HttpResponse, sử dụng methodwritelines hay write để viết nội dung html nằm trong response này. Cuối cùng sẽ return response để trả về cho máy người dùng.

Tiếp theo ta sẽ phải xây dựng bộ urls để ứng với mỗi url trên trang web thì sẽ gọi hàm gì xử lý request đó. Ở app home, ta tạo thêm 1 file chúng tôi có nội dung như sau:

from chúng tôi import path from . import views urlpatterns = [ path('', views.index) ]

Mình sẽ import thêm class path để định nghĩa các urls , và views từ app home. biến urlpatterns là một list lưa các path tồn tại trong app home. ở đây mình tạo path có đường dẫn trắng và tương ứng gán hàm index từ module chúng tôi (chính là file index mình viết ở trên). Các bạn tạm thời viết như vậy, phía dưới Kteam sẽ giải thích sau.

Bây giờ ta quay lại folder PythonWeb, có 1 file chúng tôi thì như bài trước mình đã giải thích urls là file giúp chúng ta tạo các đường dẫn urls của trang web để liên kết các webpage lại với nhau. Kteam sẽ dùng file này để tổng hợp các urls con nằm ở mỗi web app. Ta vào file chúng tôi để chỉnh sửa như sau:

from django.contrib import admin from chúng tôi import path, include urlpatterns = [ path('admin/', admin.site.urls), path('home', include('home.urls')), ]

Đầu tiên ta sẽ thêm hàm include từ thư viện urls. Ở trong file urlpatterns, ta thêm một path có 2 tham số truyền vào: đầu tiên là tên của path là home, thứ hai là hàm include chưa tham số là ' home.urls' có nghĩa là file urls trong app home. Khi ta chạy server vào localhost nó sẽ hiện như sau:

Có thể hiểu nôm na là hiện tại web server của chúng ta chỉ có 2 đường dẫn là admin và home. nếu ta vào localhost:8000 là path trắng thì trả về lỗi 404. Vậy bây giờ ta thử vào http://localhost:8000/home sẽ ra sao:

Nó trả về nội dung ở hàm index mà chúng ta đã viết. Vậy nguyên lý hoạt động như thế nào:

Bây giờ, ta muốn khi vào localhost:8000 thì mặc định chạy hàm index thì sao. Ta sẽ xóa định nghĩa path home bằng đường dẫn trắng là được

from django.contrib import admin from chúng tôi import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('home.urls')), ]

Cách viết test case đơn giản

Trong việc lập trình, việc kiểm thử phần mềm là điều luôn luôn có. Có khi chúng ta cũng có thể tự viết 1 vài test case đơn giản để kiểm tra trước khi đưa cho đội ngũ tester kiểm thử. Bây giờ Kteam sẽ giúp các bạn viết 1 test case đơn giản như sau.

Bạn vào file chúng tôi trong app home để kiểm tra thử hàm index, bạn viết như sau:

from chúng tôi import TestCase, SimpleTestCase # Create your tests here. class SimpleTest(SimpleTestCase): def test_home_page_status(self): response = self.client.get('/') self.assertEquals(response.status_code, 200)

Ta sẽ import thêm class SimpleTestCase là class con của TestCase, rồi khai báo 1 class SimpleTest kế thừa SimpleTetCase. Trong class TestCase thì các method test mặc định tên phải theo cú pháp ' test_tên'.

Ở method test_home_page_status, Kteam sẽ đặt vị trí của mình vào client thông qua self.client và gọi đến đường dẫn '/' tương ứng với http://localhost:8000 và nhận được response từ hàm index. Từ response ta thử kiểm tra xem status_code có bằng 200 không, vì theo quy tắc http khi response trả về thành công sẽ trả code là 200.

Bây giờ ta tắt server và gõ cú pháp sau để chạy test

Ở đây ta chỉ cần chạy file test ở app home thì có kết quả như sau:

Ta thấy CMD hiển thị đã chạy 1 test trong 0.005s và OK (không có lỗi). Giờ ta thử đổi thay vì kiểm tra status code bằng 200 thì kiểm tra bằng 201 sẽ như thế nào:

Nó sẽ báo lỗi là kết quả status code không trả về giá trị mà ta mong muốn.

Kết

Như vậy Kteam đã giới thiệu cách tạo một Web App và xử lý khi người dùng yêu cầu truy cập trong Python Django

Ở bài tiếp theo, Kteam sẽ giới thiệu cho các bạn SỬ DỤNG TEMPLATE VÀ JINJA TRONG PYTHON DJANGO

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện chúng tôi để nhận được sự hỗ trợ từ cộng đồng.