Trên thực tế, Python không chỉ là một ngôn ngữ lập trình thông thường, mà cònlà một ngôn ngữ được sử dụng rộng rãi trong các lĩnh vực như khoa học dữ liệu, trítuệ nhân tạo, phát triển we
TỔNG QUAN VỀ PYTHON
Giới thiệu
Python được phát triển vào cuối những năm 1980, bắt đầu từ tháng 12/1989 bởi Guido van Rossum tại CWI, Hà Lan, như một sự kế thừa của ngôn ngữ ABC, với cảm hứng từ SETL Ngôn ngữ này có khả năng xử lý ngoại lệ và tương tác với hệ điều hành Amoeba Guido van Rossum là tác giả chính của Python và vẫn giữ vai trò quyết định trong hướng phát triển của ngôn ngữ, được cộng đồng Python tôn vinh với danh hiệu “Độc tài nhân từ cho cuộc sống” (BDFL).
Python 2.0 được phát hành vào ngày 16/10/2000, với nhiều tính năng chính mới bao gồm một bộ dọn rác đầy đủ và hỗ trợ Unicode Với phiên bản này, quá trình phát triển đã được thay đổi và trở thành minh bạch hơn và được cộng đồng ủng hộ.
Python 3.0 (còn được gọi là Python 3000 hoặc Py3k), một bản phát hành lớn, không tương thích ngược, được phát hành vào ngày 03/12/2008 sau một thời gian dài thử nghiệm Nhiều trong số các tính năng chính của nó đã được điều chỉnh để tương thích ngược với Python 2.6 và 2.7 Các tính năng và triết lý phát triển Python là 1 ngôn ngữ lập trình đa hình: lập trình hướng đối tượng và hướng cấu trúc được hỗ trợ đầy đủ, và có 1 số tính năng của ngôn ngữ hỗ trợ lập trình theo chức năng và lập trình hướng khía cạnh (Aspect-oriented programming) Nhiều mô hình khác được hỗ trợ bằng việc sử dụng các phần mở rộng, bao gồm thiết kế theo hợp đồng (design by contract) và lập trình luận lý.
Các trang như Mozilla, Reddit, Instagram và PBS đều được viết bằng Python Ngôn ngữ lập trình Python được dùng vào các mục đích:
Phát triển web (trên máy chủ)
Tính toán một cách khoa học
Lên kịch bản cho hệ thống
Các tính năng của Python
Phân tích dữ liệu và học máy với mã Python
Trong bối cảnh dữ liệu ngày càng phong phú, việc sử dụng dữ liệu trong ra quyết định trở nên thiết yếu Công nghệ máy học và phân tích dữ liệu giúp chúng ta đạt được mục tiêu này Đặc biệt, ngôn ngữ lập trình Python đóng vai trò quan trọng trong việc thu thập, tổ chức và xử lý dữ liệu hiệu quả.
Phát triển web và phát triển phần mềm
Ngôn ngữ Python là một công cụ mạnh mẽ trong phát triển web và phần mềm, hỗ trợ nhiều khung như Pyramid, Django và Flask Những khung này đã đóng góp vào việc xây dựng các trang web nổi tiếng như Spotify, Reddit và Mozilla Với khả năng quản lý nội dung, ủy quyền và truy cập cơ sở dữ liệu, Python trở thành ngôn ngữ hàng đầu cho phát triển web.
Tự động hóa hoặc viết kịch bản bằng mã Python
Viết kịch bản là quá trình tạo mã để tự động hóa các tác vụ, và Python là một ngôn ngữ lập trình lý tưởng cho mục đích này Việc sử dụng kịch bản thường áp dụng trong các công việc lặp đi lặp lại, giúp tiết kiệm thời gian, tài nguyên và giảm thiểu công sức thủ công Mã Python có khả năng tự động hóa quy trình, mang lại hiệu quả cao trong công việc.
Kiểm thử phần mềm và tạo nguyên mẫu
Python là một ngôn ngữ lập trình mạnh mẽ có khả năng theo dõi lỗi, kiểm soát tòa nhà, phát triển web, phát triển phần mềm và kiểm tra phần mềm Sử dụng mã Python, bạn có thể giảm thiểu thời gian cho các hoạt động này, giúp bạn tập trung vào những nhiệm vụ quan trọng hơn.
Tại sao lại là Python?
Tại sao bạn nên sử dụng mã Python khi chúng ta có nhiều ngôn ngữ lập trình phổ biến khác? Đây là những lý do:
Python là ngôn ngữ lập trình đơn giản và dễ học, với cú pháp rõ ràng và sự gần gũi với tiếng Anh, giúp người dùng dễ dàng hiểu và áp dụng Nhờ vào những đặc điểm này, việc sử dụng Python để phát triển phần mềm và thực hiện các tác vụ khác trở nên thuận tiện hơn.
Cung cấp hỗ trợ cộng đồng tích cực
Cộng đồng hỗ trợ ngôn ngữ Python rất tích cực và khác biệt so với các ngôn ngữ khác, giúp bạn dễ dàng tìm kiếm sự trợ giúp chuyên nghiệp trong quá trình phát triển phần mềm và tự động hóa Nếu gặp phải vấn đề, bạn có thể tham gia các diễn đàn để tìm câu trả lời cho mọi thắc mắc liên quan đến Python Sự hiện diện của cộng đồng này đảm bảo bạn không phải đơn độc trong việc giải quyết các vấn đề phát sinh.
Cung cấp môi trường linh hoạt
Với mã Python, bạn không phải giới hạn bản thân trong một trường cụ thể.
Nó là một trong những ngôn ngữ lập trình đa năng, phù hợp cho phát triển web, phần mềm và giải pháp tự động, không phân biệt độ phức tạp hay lĩnh vực ứng dụng.
Nhiều thư viện và khung có sẵn
Python Software Foundation đã phát triển nhiều thư viện và khung như NumPy, SciPy và Django, giúp lập trình viên tiết kiệm thời gian bằng cách không cần viết mã từ đầu khi phát triển phần mềm.
Nền tảng phần mềm Python giúp ích trong các công nghệ phức tạp
Sau khi học mã Python, bạn sẽ thấy các công nghệ phức tạp trở nên dễ hiểu hơn Ngôn ngữ lập trình Python giúp bạn dễ dàng quản lý các nhiệm vụ tự động hóa tốn thời gian và yêu cầu kiến thức chuyên môn.
Cú pháp mã Python và ngữ nghĩa
Cú pháp Python là tập hợp các quy tắc lập trình mà ngôn ngữ này dựa vào để được viết và giải thích, trong khi ngữ nghĩa liên quan đến ý nghĩa của các câu lệnh So với nhiều ngôn ngữ lập trình phổ biến khác, Python có cú pháp và ngữ nghĩa đơn giản hơn, giúp người dùng dễ dàng tiếp cận và sử dụng.
Ngôn ngữ lập trình Python sử dụng cú pháp dễ đọc, giúp các nhà phát triển hiểu rõ hơn và hỗ trợ người mới bắt đầu trong việc diễn giải mã Sự hiện diện của khoảng trắng và cách thụt đầu dòng trong Python giảm thiểu nhầm lẫn bằng cách cung cấp một phương pháp duy nhất để thực hiện mỗi tác vụ Là một ngôn ngữ lập trình đa mục đích, Python được thiết kế để toàn diện và đơn giản, tạo điều kiện thuận lợi cho mọi người sử dụng.
Môi trường phát triển phần mềm tích hợp Python
Các nền tảng ngôn ngữ lập trình và môi trường phát triển phần mềm cung cấp cho lập trình viên các công cụ toàn diện để phát triển ứng dụng và phần mềm Khung Python cơ bản đã được thiết lập, giúp cả nhà phát triển và những người không chuyên dễ dàng tùy chỉnh hoặc tạo ra các ứng dụng, dịch vụ và sản phẩm kỹ thuật số mới.
Cài đặt Python?
Để download Python, ta truy cập địa chỉ trang chủ của python qua địa chỉ: https://www.python.org/downloads/ và tải python bản mới nhất.
Sau khi tải xong, hãy nhấn vào file exe vừa tải để bắt đầu quá trình cài đặt Tiếp theo, bạn chỉ cần thực hiện theo các bước hướng dẫn, bao gồm việc chọn các thành phần cài đặt, xác định đường dẫn cần thiết và các thông số khác.
Các Khái Niệm Cơ Bản Trong Lập Trình Python
Trong Python bất kỳ văn bản nào ở bên phải biểu tượng # thì sẽ được trình biên dịch hiểu là một comment và không biên dịch phần đó
Việc sử dụng nhiều comment hữu ích trong chương trình sẽ giúp công việc lập trình trở nên dễ dàng hơn Bạn nên giải thích các giả định, quyết định quan trọng, và chi tiết cần thiết Hãy làm rõ vấn đề mà bạn đang cố gắng giải quyết cũng như các thách thức mà bạn đang nỗ lực khắc phục trong mã nguồn của mình.
Hằng số là những giá trị không thay đổi, như số 5, 1.23 hoặc chuỗi 'python' và 'It’s a string!' Chúng được gọi là hằng số vì giá trị của chúng luôn đại diện cho chính chúng mà không có sự biến đổi Ví dụ, số 2 luôn luôn mang giá trị là 2, do đó tất cả những giá trị này đều được xem là hằng số.
Số chủ yếu có hai loại – số nguyên (integer) và số thực (float).
Một chuỗi là một dãy các ký tự Chuỗi về cơ bản chỉ là một loạt các từ.
Biến là một thành phần quan trọng trong lập trình, cho phép lưu trữ và quản lý giá trị có thể thay đổi Chúng có khả năng lưu trữ bất kỳ thông tin nào mà có thể được định nghĩa, và thực chất, biến chỉ là một phần của bộ nhớ máy tính dùng để lưu trữ dữ liệu.
Python đề cập đến bất cứ điều gì được sử dụng trong một chương trình như là một đối tượng.
Cấu trúc dữ liệu là gì, các kiểu cấu trúc dữ liệu trong python
Việc tổ chức và quản lý dữ liệu rất quan trọng để đảm bảo truy cập và sửa đổi hiệu quả Cấu trúc dữ liệu trong Python cho phép sắp xếp dữ liệu một cách hợp lý, với các loại như List, Dictionary, Tuple và Set Người dùng có thể tạo ra các cấu trúc dữ liệu tùy chỉnh, mang lại sự linh hoạt trong việc quản lý dữ liệu Những cấu trúc dữ liệu quan trọng như Stack, Queue, Tree và Linked List cũng có mặt trong nhiều ngôn ngữ lập trình khác.
Cấu trúc dữ liệu tích hợp (Built-in Data Structures).
Cấu trúc dữ liệu trong Python được tích hợp sẵn, giúp lập trình viên dễ dàng hơn trong việc phát triển ứng dụng và tìm kiếm giải pháp nhanh chóng Các loại cấu trúc dữ liệu này bao gồm danh sách, tuple, tập hợp, và từ điển.
Danh sách là cấu trúc dữ liệu dùng để lưu trữ các loại dữ liệu khác nhau theo thứ tự Mỗi phần tử trong danh sách được gán một địa chỉ, gọi là chỉ số (Index) Chỉ số bắt đầu từ 0 và tăng dần cho đến phần tử cuối cùng, được gọi là chỉ số dương.
Từ điển là một cấu trúc dữ liệu được sử dụng để lưu trữ các cặp key-value, tương tự như một thư mục điện thoại chứa hàng trăm hoặc hàng ngàn tên và số điện thoại Trong đó, các giá trị không đổi như tên và số điện thoại được gọi là các phím, trong khi các tên và số điện thoại khác nhau chính là các giá trị.
Trong Python, cấu trúc dữ liệu key-value được lưu trữ dưới dạng Dictionary, cho phép truy cập các giá trị thông qua các phím Khi truy cập các phím trong Dictionary, người dùng sẽ nhận được tất cả tên và số điện thoại tương ứng.
Tập hợp là một nhóm các yếu tố không có thứ tự và là duy nhất, có nghĩa là dù dữ liệu có được lặp lại nhiều lần, nó chỉ được tính một lần trong tập hợp.
Tuple, hay còn gọi là các bộ dữ liệu, tương tự như danh sách nhưng có điểm khác biệt là dữ liệu trong Tuple không thể thay đổi sau khi đã được nhập Tuy nhiên, nếu dữ liệu bên trong Tuple là các đối tượng có thể thay đổi, thì chỉ lúc đó dữ liệu của Tuple mới có thể được điều chỉnh.
Hình 1.6-1 so sánh list và tuple
Cấu trúc điều khiển trong python
Python thực hiện các câu lệnh theo thứ tự từ trên xuống một cách chính xác Các câu lệnh điều khiển giúp điều chỉnh luồng thực thi của chương trình Trong Python, có ba loại lệnh điều khiển cấu trúc chính là: if, for và while.
1.7.1Lệnh if Được sử dụng để kiểm tra một điều kiện: nếu điều kiện là đúng sẽ chạy một khối các câu lệnh (được gọi là if-block), nếu sai chương trình sẽ xử lý một khối các câu lệnh khác (được gọi là else-block ).
Cho một số nguyên đã cho, người dùng nhập vào một số nguyên khác và hệ thống sẽ thông báo các kết quả tương ứng Nếu các điều kiện được thỏa mãn, các kết quả khác nhau sẽ được in ra.
Hình 1.7-1 Ví dụ lệnh if trong bài toán
Khi nhập một số nguyên bất kỳ, nếu số này bằng với số đã cho trước, hệ thống sẽ in ra thông báo “chính xác” Ngược lại, nếu số nhập vào lớn hơn hoặc nhỏ hơn số cho trước, kết quả sẽ khác.
Hình 1.7-2 kết quả ví dụ lệnh if
Câu lệnh for in là một cấu trúc lặp trong lập trình, cho phép lặp qua từng đối tượng trong một chuỗi Câu lệnh này giúp truy cập và xử lý từng mục một cách dễ dàng và hiệu quả.
Sequences trong Python là tập hợp các phần tử, bao gồm nhiều loại như danh sách, tuple và chuỗi Chúng cho phép lưu trữ và truy cập dữ liệu một cách hiệu quả Mỗi loại sequence có những đặc điểm riêng, phù hợp với từng nhu cầu sử dụng khác nhau.
Hình 1.7-3 ví dụ lệnh for
Vòng lặp for trong Python khác biệt hoàn toàn so với C/C++ Nó tương tự như vòng lặp foreach trong C# Trong C/C++, cú pháp là for(int i = 0; i < 5; i++), trong khi trong Python, bạn chỉ cần sử dụng for i in range(0, 5) Vòng lặp for trong Python đơn giản hơn, biểu cảm hơn và ít lỗi hơn.
Hình 1.7-4 kết quả ví dụ lệnh for
Trong Python, câu lệnh while cho phép thực hiện liên tục một khối lệnh miễn là điều kiện vẫn đúng Đây là một ví dụ điển hình của câu lệnh lặp, và nó có thể bao gồm một mệnh đề khác tùy chọn.
Nhập vào một số nguyên đáp ứng các điều kiện đã đề ra Sau khi thực hiện một loạt lệnh theo yêu cầu, hãy in ra kết quả “Hoàn thành”.
Hình 1.7-5 Ví dụ lệnh while
Hình 1.7-6 kết quả ví dụ lệnh while
Cấu trúc dữ liệu là gì, các kiểu cấu trúc dữ liệu trong python
Hàm là các phần tái sử dụng trong chương trình, cho phép đặt tên cho một khối lệnh và gọi khối đó bất kỳ lúc nào với số lần không giới hạn Để định nghĩa hàm, sử dụng từ khóa “def” theo sau là tên hàm, một cặp dấu ngoặc đơn có thể chứa tên biến, và dấu hai chấm kết thúc dòng Sau đó, khối lệnh của hàm sẽ được thực thi.
Hình 1.9-1 Ví dụ về hàm
1.8.2Các thông số của Hàm (Function Parameters)
Một hàm có thể nhận tham số, là các giá trị bạn cung cấp để sử dụng cho mục đích cụ thể Các tham số này tương tự như biến ngoại, nhưng giá trị của chúng được xác định khi gọi hàm Tham số được khai báo trong cặp dấu ngoặc và phân tách bằng dấu phẩy Khi gọi hàm, bạn cung cấp các giá trị tương ứng Cần lưu ý rằng tên trong định nghĩa hàm gọi là tham số, trong khi các giá trị cung cấp trong lệnh gọi hàm được gọi là đối số.
Hình 1.9-4 kết quả ví dụ hàm Function parameters
1.8.3Câu lệnh return trong Python
Lệnh return trong lập trình được sử dụng để thoát khỏi hàm và quay lại vị trí mà hàm được gọi Nó có thể bao gồm một biểu thức để tính toán và trả về giá trị Nếu không có biểu thức hoặc lệnh return trong hàm, hàm sẽ trả về giá trị None Lệnh return có thể trả về một giá trị cụ thể hoặc không trả về gì cả Khi lệnh return được thực hiện, hàm sẽ kết thúc, nhưng lệnh này không bắt buộc phải có trong thân hàm.
Cú pháp: return [danh_sach_bieu_thuc]
Lệnh return có thể được sử dụng để so sánh hai số x và y nhằm tìm ra số lớn nhất Nếu x bằng y, kết quả sẽ thông báo rằng hai số này bằng nhau Trong trường hợp x lớn hơn y, lệnh sẽ trả về giá trị x, và ngược lại, nếu x nhỏ hơn y, kết quả sẽ là y.
Hình 1.9-6 ví dụ lệnh return
Kết quả: in ra giá trị lớn nhất trong hai số cho trước
Hình 1.9-7 kết quả ví dụ lệnh return
Chuỗi đầu tiên sau tiêu đề hàm, được gọi là docstring (chuỗi tài liệu), có vai trò giải thích chức năng của hàm Mặc dù không bắt buộc, nhưng việc cung cấp một mô tả ngắn gọn về chức năng của hàm giúp người dùng dễ dàng hiểu được tác dụng của hàm mà không cần tra cứu lại định nghĩa Thêm tài liệu cho mã nguồn cũng hỗ trợ người lập trình nhớ lại khi quay trở lại làm việc với mã.
GIỚI THIỆU ĐỀ TÀI
Lý do chọn đề tài
Nhận thấy sự phát triển mạnh mẽ của thiết bị thông minh như máy tính, máy tính bảng và điện thoại thông minh, nhu cầu đọc truyện của độc giả ngày càng tăng cao Tuy nhiên, giá thành để sở hữu bộ truyện tranh chất lượng thường không hề rẻ Vì vậy, chúng tôi quyết định xây dựng một website cho phép đọc truyện online miễn phí, nhằm đáp ứng nhu cầu này của bạn đọc.
Giới thiệu về đề tài
Công nghệ thông tin (CNTT) ngày càng trở nên thiết yếu trong cuộc sống hàng ngày, giúp nâng cao hiệu quả và tốc độ thực hiện công việc Sự phát triển của CNTT đã mở ra nhiều cơ hội nghề nghiệp mới, trong đó lập trình web nổi bật như một lĩnh vực dịch vụ mang lại giá trị kinh tế cao.
Một ứng dụng phổ biến của lập trình web là tạo ra website đọc truyện Chúng tôi sẽ phát triển một website đọc truyện online miễn phí, nơi người dùng có thể khám phá nhiều thể loại truyện khác nhau và thưởng thức những bộ truyện yêu thích với nội dung và hình ảnh chất lượng cao.
Với sự phát triển mạnh mẽ của công nghệ thông tin, hiện nay có nhiều công nghệ để tạo ra website cá nhân, như JavaScript, Python, PHP, C#, trong đó chúng tôi sẽ tập trung vào ứng dụng Django Framework để phát triển web app Django nổi bật với giao diện quản trị đơn giản, thư viện hỗ trợ phong phú và khả năng mở rộng linh hoạt, giúp cho dự án trở nên dễ dàng và hiệu quả hơn Kết hợp với kiến thức về cơ sở dữ liệu SQL, chúng tôi sẽ xây dựng một website đọc truyện đơn giản.
DEMO VÀ GIỚI THIỆU VỀ DJANGO
Tổng quan về Django
Django là một framework Python mạnh mẽ, giúp phát triển phần mềm nhanh chóng và hiệu quả Được phát triển bởi các lập trình viên dày dạn kinh nghiệm, Django giải quyết nhiều vấn đề trong phát triển web, cho phép bạn tạo ra trang web mà không cần bắt đầu từ đầu Đặc biệt, Django hoàn toàn miễn phí và mã nguồn mở.
Những lợi thế của Django:
Django theo đuổi triết lý "Batteries included", mang đến cho lập trình viên mọi công cụ cần thiết mà không cần tìm kiếm bên ngoài Điều này cho phép chúng ta tập trung hoàn toàn vào việc phát triển sản phẩm, với tất cả các thành phần hoạt động hài hòa và liền mạch.
Django is a versatile framework that can be utilized to create various types of websites, ranging from content management systems to social media platforms and news sites It seamlessly integrates with client-side frameworks and supports multiple content formats, including HTML, RESS, JSON, and XML.
Django cung cấp các biện pháp bảo mật hiệu quả cho các nhà phát triển, giúp ngăn chặn những lỗi bảo mật phổ biến Framework này hướng dẫn sử dụng các kỹ thuật bảo mật cần thiết để bảo vệ website, bao gồm việc quản lý tên tài khoản và mật khẩu an toàn Ngoài ra, Django cũng tránh việc lưu trữ thông tin session trong cookie và khuyến khích mã hóa mật khẩu thay vì lưu trữ dưới dạng văn bản thuần.
Django dễ dàng mở rộng nhờ kiến trúc shared-nothing, cho phép các thành phần hoạt động độc lập và có thể thay thế hoặc sửa đổi khi cần Sự phân chia rõ ràng giữa các phần giúp tăng cường khả năng mở rộng để đáp ứng lưu lượng truy cập gia tăng, thông qua việc bổ sung phần cứng ở các cấp độ như caching, máy chủ, máy chủ cơ sở dữ liệu, và máy chủ ứng dụng Nhiều trang web kinh doanh đã thành công trong việc mở rộng với Django để đáp ứng nhu cầu của họ.
Django dễ bảo trì nhờ vào các nguyên tắc thiết kế và mẫu mã khuyến khích việc tái sử dụng code Nguyên tắc "Don't Repeat Yourself" giúp loại bỏ sự lặp lại không cần thiết, từ đó giảm thiểu khối lượng code.
Django, được phát triển bằng ngôn ngữ Python, mang lại tính linh động cao nhờ khả năng chạy trên nhiều nền tảng khác nhau, không bị ràng buộc vào một máy chủ cụ thể Nhiều nhà cung cấp hosting hiện nay hỗ trợ tốt cho Django, cung cấp hạ tầng và tài liệu chi tiết để dễ dàng triển khai web Django.
Sự phổ biến của Django
Hiện tại, chưa có thống kê cụ thể về sự phổ biến của các framework Việc đánh giá chủ yếu dựa vào số lượng website nổi bật sử dụng Django, số lượng người đóng góp vào codebase, cũng như số lượng nhà phát triển, cả tình nguyện lẫn chuyên nghiệp Do đó, có thể khẳng định rằng Django là một trong những framework phổ biến hiện nay.
Các trang web phổ biến sử dụng Django: Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest, and Open Stack
Cách đặt thư viện Django
Ta sẽ cài đặt Django bằng trình lệnh pip của Python Bây giờ bạn mở Terminal/CMD và gõ lệnh sau: pip install Django
Quản lý thư viện dùng trong Project
Các thư viện cần thiết cho dự án được lưu trữ trong file requirements.txt, giúp người dùng và các nhà phát triển dễ dàng cài đặt nhanh chóng từ thư mục gốc của hệ thống.
Để thêm thư viện vào file requirements.txt sau khi cài đặt, chúng ta sử dụng lệnh pip freeze > requirements.txt Ví dụ, sau khi cài đặt thư viện mysqlClient để kết nối đến MySQL, ta chạy lệnh này để người dùng hoặc nhà phát triển có thể dễ dàng nhận biết và sử dụng lệnh pip install -r requirements.txt nhằm tải về các thư viện cần thiết.
Chạy lệnh pip install -r requirements.txt để load thư viện
3.2.1 Cách cấu hình dự án và cách hoạt động nhóm
Với dự án này các thành viên sử dụng Github để hoạt động Trang github chính thức của nhóm là https://github.com/hungskygaren
Vậy chúng ta cần tìm hiểu Github là gì?
GitHub là dịch vụ phổ biến cung cấp kho lưu trữ mã nguồn Git cho các dự án phần mềm, kết hợp đầy đủ tính năng của Git với các tính năng mạng xã hội, giúp các lập trình viên tương tác và hợp tác hiệu quả hơn.
Vài thông tin về GIT:
● Là công cụ giúp quản lý source code tổ chức theo dạng dữ liệu phân tán. Giúp đồng bộ source code của team lên 1 server.
Hỗ trợ các thao tác kiểm tra source code trong quá trình làm việc (diff, check modifications, show history, merge source, …)
GitHub cung cấp hai phiên bản: miễn phí và trả phí Phiên bản trả phí thường được các doanh nghiệp ưa chuộng vì nó giúp nâng cao khả năng quản lý đội ngũ và tăng cường phân quyền bảo mật cho các dự án.
Còn lại thì phần lớn chúng ta đều sử dụng Github với tài khoản miễn phí để lưu trữ source code.
● Github cung cấp các tính năng social networking như feeds, followers, và network graph để các developer học hỏi kinh nghiệm của nhau thông qua lịch sử commit.
Trên Github, commit message là phần mô tả hành động mà bạn thực hiện đối với mã nguồn, tương tự như một comment giải thích cho đoạn code.
Github đã trở thành một yếu tố quan trọng trong cộng đồng nguồn mở, tương tự như Linkedin, nơi mà nó được xem như một sự thay thế cho CV của bạn Nhiều nhà tuyển dụng thường tham khảo hồ sơ Github để đánh giá khả năng lập trình của ứng viên.
Để sử dụng và phát triển dự án, bước đầu tiên là clone dự án về máy tính Mở cmd và nhập lệnh như trong hình để khởi chạy.
Sau khi làm xong bước trên thì trên máy sẽ có thư mục dự án, chúng ta bật lên bằng trình soạn thảo (ở Đây chúng ta dùng pycharm)
Để khởi chạy, bạn cần tham khảo hướng dẫn trong file README.md hoặc truy cập vào link GitHub chính để đọc phần hướng dẫn Cấu trúc thư mục sẽ tương tự như mô tả.
Hướng dẫn chi tiết cài đặt sử dụng dự án
Sau khi hoàn thiện các bước trên chúng ta cần tạo một user admin(superuser) để sử dụng trang admin bằng câu lệnh python manage.py createsuperuser
Để phát triển dự án theo nhóm trên GitHub, mỗi thành viên cần tạo một nhánh (branch) sau khi clone dự án về máy Để thực hiện điều này, hãy chú ý đến biểu tượng GitHub ở góc trái trong trình soạn thảo, sau đó chọn tùy chọn tạo branch.
Hình ảnh giao diện tạo branch
Sau khi tạo xong branch chúng ta cần checkout ra branch mới vừa tạo để tiến hành code (mặc định branch sẽ là master)
Chúng ta checkout branch và tiến hành code
Sau khi hoàn thành từng phần, chúng ta cần thực hiện commit và tạo push request Hãy chú ý đến thanh công cụ bên phải, nơi có mục chọn commit; khi nhấn vào đó, giao diện commit và push sẽ được mở ra.
Giao diện phần commit Ở giao diện này chúng ta chọn những file cần push lên sau đó chọn phần commit and push
Để đồng bộ hóa với các nhà phát triển khác trên GitHub, chúng ta cần thực hiện hai bước chính Đầu tiên, khi một hộp thoại hiện ra, chọn "push" để đẩy mã lên GitHub Tiếp theo, để cập nhật mã từ GitHub về máy tính cá nhân, hãy chú ý đến biểu tượng "pull" ở góc trên màn hình và nhấn vào đó để đồng bộ hóa mã nguồn.
2.2.2 Giao diện tổng quát và một số chức năng chính
Mỗi giao diện hiển thị sẽ tương ứng với 1 thư mục trong thư mục chính template (phần hiển thị)
Phần giao diện trang chủ được quản lý bởi file HomeView.py trong thư mục controller Trong file này, chúng ta sẽ tạo một số hàm để hiển thị giao diện và lưu trữ trong object context Một trong những hàm cơ bản cần thiết cho giao diện trang chủ là getNewView(), dùng để lấy danh sách những truyện mới cập nhật Hàm getNewView() sẽ trả về danh sách các truyện mới nhất.
Tương tự ta có một số hàm như getTopView(), getNewChap(), getLoveView() để cung cấp nội dung cho template hiển thị
Tiếp sau ta sẽ tới phần giao diện của trang chủ Đây là giao diện chính thức của trang chủ
Giao diện được xây dựng bằng HTML5 và CSS, kết hợp với Bootstrap để tối ưu hóa bố cục và đảm bảo tính tương thích trên mọi thiết bị.
Các trang hiển thị được dùng chung với 1 template chính nằm trong thư mục Base
File template Base được dùng để khởi tạo html cũng như include những thư viện js và css cần dùng.
Mỗi template trong Django sẽ được hiển thị thông qua thẻ block, với mã code tự động được nhúng giữa hai thẻ block và endblock tương ứng với từng URL.
Trong file template home, chúng ta kế thừa template Base thông qua thẻ extends để tái sử dụng giao diện chính Đồng thời, thẻ load static được sử dụng để tải các tài nguyên hệ thống như file CSS và hình ảnh.
Mô Hình MVC
- MVC là viết tắt của 3 từ Model-View-Controller:
- Model: Là kiến trúc dữ liệu database, là nơi cung cấp các chức năng xử lý đến database.
- View: Là nơi hiển thị giao diện cho người dùng.
- Controller: Nhiệm vụ nhận các request của người dùng, sau đó sẽ lấy dữ liệu từ model và đưa sang cho view.
Cách hoạt động mô hình MVC
Khi người dùng gửi yêu cầu lên máy chủ, yêu cầu đó sẽ được chuyển đến controller Tại đây, controller sẽ xác định nhu cầu của người dùng, và nếu có yêu cầu về dữ liệu, nó sẽ truy cập vào cơ sở dữ liệu để lấy thông tin cần thiết.
Khi nhận được dữ liệu, controller sẽ chuyển giao thông tin này cho view View sẽ sử dụng dữ liệu để tạo ra các hiển thị cho trang web và phản hồi lại cho máy của người dùng.
Django is a popular web framework written in Python that offers a wide range of features for website development, including security, database access, session management, routing, and localization.
Django mặc định đã áp dụng mô hình MVC ngay từ đâu, diễn đạt như sau:
Trong kiến trúc MVC, Models là phần quan trọng để thiết kế các bảng cho cơ sở dữ liệu Django ORM cung cấp nhiều phương thức để xử lý và thực hiện các nghiệp vụ liên quan đến cơ sở dữ liệu.
- Template: Chính là View trong MVC, là những template ta thiết kế ra cho trang web.
- View: Đây là Controller trong MVC, trong view có các function xử lý khi có request từ người dùng. Ở đoạn Code sau thể hiện cách hoạt động MVC Django:
Hàm post nằm ở controller để xử lý các request người dùng
Dòng code 11: Chính là nơi tương tác controller với models
Dòng code 15: Thể hiện việc controller gửi data cho views views từ đây lo xử lý cách hiển thị cho người dùng
Một số công ty hàng đầu sử dụng Django như Instagram, Spotify, Youtube, Dropbox, trình duyệt Mozilla, Disqus
3.3.2 Lập trình web với Django:
Django được xây dựng giúp phát triển website nhanh chóng với đầy đủ thư viện, module cần thiết Đặc biệt, thiết kế sạch sẽ, thiết thực và gọn gàng.
Khả năng dễ đọc và tính đơn giản của Python giúp lập trình viên tập trung vào các vấn đề phức tạp và logic nghiệp vụ cao, mà không phải lo lắng về những rắc rối đã được giải quyết bởi người khác.
Django sở hữu một mô hình xác thực người dùng mạnh mẽ và dễ cấu hình, giúp tăng cường bảo mật cho các trang web và ứng dụng Chính vì vậy, Django là sự lựa chọn hàng đầu cho những dự án cần đảm bảo an toàn thông tin.
Ngoài ra, Django sở hữu khả năng mở rộng tốt, đáp ứng lượng traffic lớn và không cần lo lắng về khả năng scale sản phẩm của mình.
Hơn nữa, khi xây dựng CMS, Ecommerce Website, Social Network đều có thể kết nối linh hoạt với Django và không phụ thuộc lẫn nhau.
3.3.3 Tại sao phải sử dụng Django?
Django có một số ưu điểm như sau:
- Nhanh: Django được thiết kế để giúp các nhà phát triển đưa các ứng dụng từ ý tưởng đến hoàn thành càng nhanh càng tốt….
- Có đầy đủ các thư viện/module cần thiết: Django chăm sóc xác thực người dùng, quản lí, nội dung, bản đồ trang web,…
- Đảm bảo về tính bảo mật: không còn các nỗi lo về các lỗi bảo mật thông thường.
Django cũng cung cấp cả phương pháp để lưu mật khẩu an toàn.
- Khả năng mở rộng tốt: Django có thể đáp ứng nhu cầu traffic lớn.
Django mang lại tính linh hoạt vượt trội, được các công ty, tổ chức và chính phủ áp dụng để phát triển nhiều loại ứng dụng khác nhau, từ hệ thống quản lý nội dung cho đến mạng xã hội và nền tảng toán học.
Django, được phát triển từ ngôn ngữ lập trình Python và mô hình MVC, mang lại sự dễ dàng trong việc ứng dụng cho các dự án Nó hỗ trợ đa ngôn ngữ và tính năng Multi-Site, giúp tối ưu hóa quy trình phát triển.
Django là một framework dễ học với nhiều tài liệu hỗ trợ, bao gồm cả tài liệu miễn phí và sách in Cộng đồng người dùng Django đang phát triển mạnh mẽ, giúp newbie dễ dàng tìm kiếm sự hỗ trợ qua các trang Facebook, diễn đàn và blog.
3.3.4 Một số yêu cầu về cấu hình máy Đây là một số yêu cầu thiết yếu của máy tính để có thể chuẩn bị tốt cho việc lập trình nói chung và việc làm web với Django nói riêng:
-Ổ cứng SSD tối thiểu 256GB
- Bộ xử lý Intel Core i5 hoặc i7
- Độ phân giải Full HD, lý tưởng nhất là 1920x1080
Trong Django, các models kế thừa tính chất của nhau và tạo ra cơ sở dữ liệu theo thiết kế đã định Để khởi tạo cơ sở dữ liệu cho ứng dụng MyTruyen, người dùng cần truy cập vào thư mục Data/models.py và xây dựng các models, đây chính là phần Model trong mô hình MVC.
Sau đó cập nhật các thay đổi của models bằng cú pháp python manage.py makemigrations.
Lúc đó chương trình sẽ tự động tạo một file 0001_initial.py trong MyTruyen\ migrations để lưu lại những thay đổi trong trong models.
Ta tiếp tục ánh xạ xuống để tạo các bảng trong cơ sở dữ liệu bằng cú pháp python manage.py migrate
Sau khi tạo model xong ta vào Data/admin.py để đăng ký model vừa tạo với cú pháp như trong hình
Th eo mặc định thì Django sẽ tạo cho mình một trang Admin có sẵn để quản lí,tại địa chỉ http://127.0.0.1:8000/admin có giao diện như sau:
In the Data directory, create the file formRegister.py and define a class named PostForm, which inherits from Django's default ModelForm This form will be used to pass data to the template for the forum page.
Trong Controller, tạo file ForumView.py để định nghĩa các Views nhằm xử lý yêu cầu từ người dùng và trả về các Response tương ứng, đây là phần Controller trong mô hình MVC.
Để chỉnh sửa đường dẫn cho trang có thể truy cập, ta cần vào thư mục MyTruyen/urls.py và import các lớp ForumView, ArticleDetailView, AddPostView Các template forum.html, add_post.html, và article_details.html được kế thừa từ lớp ForumView, vì vậy cần thêm phương thức as_view() để đảm bảo có thể truy xuất đúng.
In the urls.py file, three paths are defined: add_post, article/, and forum Accessing these URLs will import and invoke the corresponding views to handle the requests.
User Registation and Login Authentication – Đăng ký người dùng và xác thực đăng nhập
Trong file setting.py, tìm INSTALLED_APPS, thêm ‘django.contrib.auth’ để tạo các permissions mặc định như add, change, delete, view,
In the Data directory, create a file named formRegister.py, which inherits from UserCreationForm—the default user creation form in Django—used to pass data to the registration page template.
In the urls.py file, define three paths for login, logout, and register When accessing these URLs, the corresponding views will be imported and called to handle the requests.
Trong Controler tạo file AuthView.py chứa các Views để xử lý các request từ người dùng và trả về các Respone tương ứng.
Trong thư mục templates, hãy tạo một thư mục con có tên Auth, bao gồm hai template là loginPage.html và registerPage.html Các template này sẽ được sử dụng để hiển thị thông tin cho người dùng dựa trên dữ liệu từ các View tương ứng.
Password Change and Edit Infor Account– Đổi mật khẩu tài khoản và chỉnh sửa thông tin tài khoản
Trong file setting.py, tìm INSTALLED_APPS, thêm ‘django.contrib.auth’ để tạo các permissions mặc định như add, change, delete, view,
In the Data directory, create a file named profileForm.py, which inherits from UserChangeForm, the default Django form for updating account information, to be used in the registration/edit_account.html template.
In the Data/profileForm.py directory, the form inherits from the PasswordChangeForm, which is Django's default form for changing user passwords, and is utilized to pass data to the template for the registration/change-password.html page.
In the urls.py file, create two paths: password and edit_account When accessing these URLs, the corresponding views will be imported and called for processing.
Trong Controler tạo file MemberView.py chứa các Views để xử lý các request từ người dùng và trả về các Respone tương ứng.
In the templates directory, create a subfolder named "registration" that contains two templates: change-password.html and edit_account.html, which are used to render user information with data from their corresponding Views.
Thiết lập mật khẩu
{{ form.as_p }} Cập nhập mật khẩu
{% endblock content %} edit_account.html
Thông tin người dùng
{{ form.as_p }} Update Profile
Profile Page and Edit Profile Page– Trang cá nhân và trang chỉnh sửa
Trong file setting.py, tìm INSTALLED_APPS, thêm ‘django.contrib.auth’ để tạo các permissions mặc định như add, change, delete, view,
In the Data/models.py directory, create a model named Profile that includes a one-to-one relationship with the User model, allowing for a null value and cascading deletion The Profile model contains a bio as a text field, an optional profile picture that uploads to the 'images/' directory, and several optional URL fields for a website, Facebook, Twitter, and Instagram, each with a maximum length of 255 characters The model's string representation returns the associated user's string.
Sau đó vào Data/admin.py để đăng ký Profile model vừa tạo admin.site.register(Profile)
In the urls.py file, two paths are created: 'edit_profile_page/' and 'profile/' When these URLs are accessed, they import and invoke the corresponding views for processing The paths are defined as follows: 'path('edit_profile_page/', EditProfilePageView.as_view(), name="edit_profile_page")' and 'path('profile/', ShowProfilePageView.as_view(), name="show_profile_page")'.
In the Controller, create a file named ProfileView.py to handle user requests and return appropriate responses Import necessary modules from Django, including render, get_object_or_404, and models such as Profile and Post Utilize generic views like ListView and DetailView, along with the reverse_lazy function for URL redirection Implement the EditProfilePageView class to update user profiles with fields for bio, profile picture, and social media links, redirecting to the home page upon success Additionally, create the ShowProfilePageView class to display user profiles, fetching the relevant Profile instance based on the primary key and passing it to the context for rendering the user profile template.
In the templates directory, create a subfolder named "registration" that contains two templates: change-password.html and edit_account.html These templates will be used to render the information displayed to users, utilizing data from the corresponding Views.
{% if user.id == profile.user.id %}
The "Edit Profile" page features a user-friendly interface designed for easy navigation, allowing users to update their personal information efficiently The main section includes a form with a visually appealing layout, where users can submit their details securely The form is structured to enhance user experience, ensuring that all interactions are straightforward and accessible.
{% csrf_token %}
Facebook :
{{ form.facebook_url }}
Twitter :
{{ form.twitter_url }}
Instagram :
{{ form.instagram_url }}
Website :
{{ form.website_url }}
Giới thiệu :
{{ form.bio }}
Ảnh hiển thị
:
{{ form.profile_pic }}
{{ form.errors }}
The article discusses the inclusion of a user profile picture, emphasizing its importance for personal branding and engagement It highlights how a well-presented avatar, displayed as a rounded-circle image, enhances the visual appeal of a user's profile This feature is designed to be responsive, ensuring optimal viewing across different devices, thus improving user experience and interaction on the platform.
{{ page_user }}
If you are the user, you can edit your profile by clicking the edit icon The profile section features links to the user's personal website and social media accounts, including Facebook, Twitter, and Instagram Additionally, a light background box displays the user's biography, providing insight into their personal information.
Model trong Django
3.7.1 Lý thuyết về Model trong Django
Trong Django, model là cách định nghĩa để lưu trữ thông tin, bao gồm các trường và hành động liên quan đến dữ liệu Model tương tự như lớp trong lập trình hướng đối tượng, và mỗi model đại diện cho một bảng trong cơ sở dữ liệu.
Các tính chất của Model :
1 Mỗi mô hình là một lớp Python phân lớp con django.db.models.Model.
2 Mỗi thuộc tính của mô hình đại diện cho một trường cơ sở dữ liệu.
3 Với tất cả những điều này, Django cung cấp cho bạn một API truy cập cơ sở dữ liệu được tạo tự động
We define the model (class) Person, which has two attributes: first_name and last_name These attributes represent fields of the model, properties of a class, and columns in a database table.
Tương ứng với model Person trên thì Django sẽ tạo ra một bảng trong CSDL như sau:
Sau khi định nghĩa các model, bước tiếp theo là cấu hình để Django nhận diện các model này bằng cách chỉnh sửa biến INSTALLED_APPS trong file settings.py.
Nếu bạn định nghĩa model trong module myapp.models (được tạo ra bằng câu lệnh manage.py startapp), thì trong biến INSTALLED_APPS, bạn cần khai báo đường dẫn tới lớp cấu hình của ứng dụng hoặc đường dẫn theo cú pháp import của Python dẫn tới package của ứng dụng.
Sau khi khai báo các thay đổi trong file settings.py, bạn cần thực hiện hai lệnh: đầu tiên là `manage.py makemigrations` để thông báo cho Django về sự thay đổi trong cấu trúc cơ sở dữ liệu, sau đó là lệnh `manage.py migrate` để cập nhật cơ sở dữ liệu.
Các trường là thành phần thiết yếu và không thể thiếu trong một mô hình, bao gồm danh sách các thuộc tính của một lớp.
Mỗi trường trong Django phải kế thừa từ lớp Field, một lớp ảo, giúp xác định kiểu dữ liệu cho các cột trong bảng, như INTEGER, VARCHAR, và TEXT.
Mỗi lớp Field trong Django yêu cầu một số tham số khi khởi tạo, chẳng hạn như lớp CharField cần tham số max_length để xác định số lượng ký tự cho cột VARCHAR trong cơ sở dữ liệu, đây là một tham số bắt buộc.
Một số tham số khác như :
null: có giá trị True hoặc False Tham số này cho Django biết sẽ dùng giá trị
NULL thay cho các bản ghi có giá trị rỗng
primary_key: True hoặc False, chỉ định trường đó có phải là khóa chính hay không.
default: thiết lập giá trị mặc định cho trường.
upload_to : Thuộc tính này cung cấp một cách đặt thư mục tải lên và tên tệp
Vẫn còn rất nhiều tham số khác nhưng ở đây tôi chỉ giới thiệu các tham số sẽ dùng trong bài làm của mình.
Sau khi tạo các lớp model trong Django, hệ thống sẽ tự động sinh ra các phương thức mới cho phép bạn thực hiện các thao tác với cơ sở dữ liệu, bao gồm việc tạo, sửa, xóa và cập nhật dữ liệu.
Mỗi bản ghi trong cơ sở dữ liệu đại diện cho một đối tượng cụ thể Để tạo bản ghi, chỉ cần tạo một đối tượng trong Python và gọi phương thức save() để lưu lại.
Ví dụ : Đoạn code trên sẽ thực hiện câu lệnh INSERT, bạn phải gọi phương thức save() thì dữ liệu mới được cập nhật lên cơ sở dữ liệu.
Trong Python, bạn có thể dễ dàng thay đổi giá trị của các đối tượng và chỉ cần sử dụng phương thức save() để Django cập nhật các thay đổi này vào cơ sở dữ liệu.
Trong bài viết này, chúng tôi chỉ đề cập một cách sơ lược về các vấn đề liên quan đến Model trong Django, phù hợp với ứng dụng trong bài làm của mình.
Tiến hành Import các thư viện hỗ trợ :
Truyen : Với các thuộc tính như Idtruyen, tentruyen, tacgia, nguon, trangthai, luotxem,anh, cùng các kiểu tương ứng như CharField, BooleanField, IntegerField, ImageField,…
Theloai : Thể loại của truyện, bao gồm các thuộc tính như Idtheloai (ID của thể loại), tentheloai (tên thể loại, ví dụ như : Kiếm hiệp, ngôn tình, cổ tích,…)
Chaptruyen : Chương, phần của truyện, với các thuộc tính như : chap (kiểu
IntegerField), tenchap (tên chương, ví dụ như : Chương mở đầu, chương kết thúc, ), noidung (nội dung của chương), thoigian (thời gian tạo chương)
Checktheloai : Thực hiện việc xác định từng truyện sẽ thuộc thể loại nào.Với các thuộc tính IDtheloai,IDtruyen
Thedoi : Theo dõi, dùng để thực hiện cho việc độc giả sẽ theo dõi các truyện mà họ quan tâm.Với các thuộc tính là user và IDtruyen.
Trang Admin trong Django
3.8.1 Tìm hiểu cơ bản về hệ thống Admin trong Django
Django cung cấp sẵn một trang admin cho riêng cho người quản trị
Để đăng nhập vào trang quản trị của Django, trước tiên cần tạo một tài khoản admin vì Django không tự động tạo tài khoản này khi khởi tạo project Để thực hiện việc tạo tài khoản, hãy chạy lệnh `manage.py` với tham số `createsuperuser`.
Sau đó chúng ta thực hiện nhập các thông tin như name, email,password
Truy cập trang admin : Để truy cập vào trang admin thì bạn chỉ cần thêm /admin vào đường dẫn trang chủ là được.
Trong trang admin của Django, người dùng có thể quản lý hai bảng chính là User và Group Để thêm các bảng hoặc mô hình vào trang admin, chỉ cần sử dụng phương thức admin.site.register() trong file admin.py mà Django đã tự động tạo.
Sau khi đã đăng kí xong thì 2 bảng Question và Choice sẽ hiện ra trong giao diện admin.
Khi đăng ký các lớp model Question và Choice với hàm admin.site.register(), Django sử dụng các thuộc tính đã khai báo để hiển thị form trên trang admin Chúng ta có thể giới hạn các thuộc tính hiển thị để chỉnh sửa, thay vì cho phép tất cả các thuộc tính xuất hiện.
cho phép lọc các đối tượng trên trang danh sách thay đổi thông qua các tra cứu từ chuỗi truy vấn của URL.
Trong bài viết này, chúng tôi chỉ đề cập một cách sơ lược về các phương thức ModelAdmin trong Django, mặc dù còn nhiều vấn đề liên quan khác cần được khám phá thêm.
3.8.2 Áp dụng Admin vào Project
Thiết kết lại trang Admin, các đoạn code bên dưới được sử dụng trong file admin.py
Import các thư viện hỗ trợ :
Hiện thị các Models lên trang Admin :
Sử dụng các methods đã được giới thiệu ở trên để thiết kế lại trang admin
Sử dụng django admin panel interface để thay đổi giao diện trang Admin
Giao diện quản trị Django cho phép người dùng thực hiện các thao tác tạo, đọc, cập nhật và xóa trực tiếp trên mô hình, cung cấp một giao diện tức thì để điều chỉnh nội dung ứng dụng Để cài đặt giao diện này, hãy chạy lệnh: pip install django-admin-interface.
Load migation python manage.py migrate
Thực hiện thêm các đoạn code sau để cấu hình trong file setting.py :
Import các thư viện hỗ trợ
Thực hiện các đoạn code sau vào file urls.py :
Tiến hành runserver và đăng nhập vào trang Admin:
Chú ý đến ADMIN INTERFACE đã được thêm vào.
Trang thay đổi : tại đây chúng ta có thể dễ dàng tùy chỉnh giao diện trang admin một cách dễ dàng
Sau khi thiết lập xong hãy chọn ACTIVE và load lại trang để xem thành quả.
Kết quả sau khi tiến hành thay đổi :