GIỚI THIỆU
Lý do chọn đề tài
Nhận thấy được sự phát triển và phổ biến của các thiết bị thông minh thì nhu cầu để sỡ hữu một chiếc máy tính ngày càng tăng cao Nắm bắt được nhu cầu ngày càng tăng cao ấy, chúng em quyết định xây dựng một website cho phép người dùng có thể dễ dàng sỡ hữu cho mình một chiếc máy tính
Giới thiệu về đề tài
Công nghệ thông tin (CNTT) ngày càng có vai trò quan trọng trong cuộc sống hàng ngày của chúng ta.Việc ứng dụng công nghệ thông tin vào các lĩnh vực trong đời sống giúp công việc được tiến hành nhanh chóng và hiệu quả hơn.Có rất nhiều công việc mới phát triển song song cùng với CNTT, một trong số đó là lập trình wed, một hướng đi dịch vụ mang lại hiệu quả kinh tế rất lớn.
Một ứng dụng của lập trình wed khá phổ biến là wedsite ecommerce và đó là đề tài của chúng em tiến hành.Ở đề tài này chúng tôi sẽ tạo ra một wedsite để người dùng có thể mua những chiêc laptop một cách dễ dàng Tại đây người dùng sẽ tiếp cận được nhiều loại máy tình đến từ nhiều hãng khác nhau và dễ dàng thanh toán
Với sự phát triển của công nghệ thông tin thì bây giờ chúng ta đã có rất nhiều công nghệ để tạo ra một wedsite cho riêng mình, ví dụ như : JavaScrip,Python,PHP,C#,… Và ở đây chug em sẽ làm về ứng dụng Flask FreamWork tạo wedapp Các ưu điểm của Flask như giao diện quản trị đơn giản, thư viện hỗ trợ đầy đủ, khả năng mở rộng, sẽ giúp cho đồ án dễ dàng và tốt hơn.Kết hợp với kiến thức về cơ sở dữ liệu SQL chúng em sẽ tạo ra một wedsite mua bán máy tính với đầy đủ chức năng cho người dùng và admin.
TRÌNH BÀY BÁO CÁO
Quản lý thư viện dùng trong Project
Các thư viện trong dự án được lưu trong file requirements.txt để người sử dụng cũng như tham gia phát triển dự án có thể cài đặt một cách nhanh nhất có thể file requirements.txt trong hệ thống thư mục gốc
Những thư viện được đặt trong file Để thêm một thư viện vào file sau khi chúng ta cài đặt thì ta sẽ sử dụng lệnh pip freeze > requirements.txt vd: Sau khi cài đặt thư viện mysqlClient để kết nối tới mysql ta sẽ chạy lệnh pip freeze > requirements.txt để khi người dùng hoặc người phát triển clone về có thể nhận biết cũng như chạy lệnh pip install -r requirements.txt để load thư viện cần dùng
Chạy lệnh pip install -r requirements.txt để load thư viện
2.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/dominhduc291001/My_Truyen
Vậy chúng ta cần tìm hiểu Github là gì?
GitHub là một dịch vụ nổi tiếng cung cấp kho lưu trữ mã nguồn Git cho các dự án phần mềm Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sung những tính năng về social để các developer tương tác với nhau.
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 có 2 phiên bản: miễn phí và trả phí Với phiên bản có phí thường được các doanh nghiệp sử dụng để tăng khả năng quản lý team cũng như phân quyền bảo mật 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.
Nếu một comment để mô tả và giải thích một đoạn code Thì với Github, commit message chính là phần mô tả hành động mà bạn thực hiện trên source code.
Github trở thành một yếu tố có sức ảnh hưởng lớn trong cộng động nguồn mở. Cùng với Linkedin, Github được coi là một sự thay thế cho CV của bạn Các nhà tuyển dụng cũng rất hay tham khảo Github profile để hiểu về năng lực coding của ứng viên.
Các bước sử dụng và phát triển Để sử dụng cũng như phát triển dự án bước đầu tiên chúng ta cần clone về máy
Chúng ta mở cmd lên và khởi chạy lệnh như hình
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)
Cấu trúc thư mục sẽ tương tự như sau Để khởi chạy chúng ta cần đọc theo 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
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
Các thao tác sử dụng github để phát triển dự án theo nhóm Đối với mỗi thành viên sau khi clone từ github về cần phải tạo 1 nhánh branch để phát triển Chúng ta để ý góc trái trong trình soạn thảo có biểu tượng github, chúng ta chọn vào và chọn phầ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 xong từng phần chúng ta tiến hành commit và tạo push request Để ý thanh công cụ bên phải ta sẽ thấy mục chọn commit, nhấn chọn commit ta sẽ mở ra giao diện commit và push
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
Một hộp thoại hiện ra chúng ta chọn push để tiến hành push lên github Để đồng bộ hóa với những người phát triển khác chúng ta cần pull lại từ github Để ý góc phía trên màn hình ta thấy biểu tượng pull, khi click vào thì code trên github sẽ được đồng bộ trở lại máy người dùng.
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 HomeView trong thư mục controler Ở trong file này chúng ta sẽ tạo một số hàm để hiện thị ra giao diện và để chúng trong object context Một số hàm cơ bản cần dùng cho giao diện trang chủ như getNewView() để lấy danh sách những truyện mới cập nhập. getNewView trả về danh sách truyện mới cập nhập
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ủ
Phần giao diện được thiết kế bằng html5 + css và có sử dụng thêm bootstrap để chia bố cục cũng như reponsive website để có thể sử dụng 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.
Phần hiển thị của từng template sẽ được gọi lại thông qua thẻ block trong django. Với mỗi url tương ứng hệ thống sẽ tự động nhúng code vào giữa 2 thẻ block và andblock.
Trong file template home chúng ta sẽ kế thừa lại template Base để tái sử dụng giao diện chính bằng thẻ extends Thẻ load static được dùng để load hệ thống tài nguyên như file css, image, được chúng ta sử dụng.
Ngoài code html chúng ta còn cần sử dụng một số thẻ trong django template như if, for, để hiển thị được dữ liệu từ server gửi về. Ở đây ta sử dụng for để lặp tất cả các item trong mảng listTruyen Để hiển thị các thuộc tính dữ liệu ta cần phải bỏ trong cặp dấu {{}} để hệ thống nhận diện và in ra dữ liệu lên màn hì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 request lên server, nó sẽ vào controller, controller kiểm tra yêu cầu người dùng muốn gì, nếu có yêu cầu dữ liệu thì controller sẽ thông qua data để lấy dữ liệu về.
Khi có dữ liệu, controller sẽ gửi data sang view, view sẽ dựa vào data để xây dựng các hiển thị trang web và response về cho máy người dùng (Như sơ đồ trên)
Django là một trong những Web Framework phổ biến, được viết bằng Python, cung cấp nhiều tính năng cho phát triển website như bảo mật, database access, session, routing, localization
Django mặc định đã áp dụng mô hình MVC ngay từ đâu, diễn đạt như sau:
- Models: Chính là Model trong MVC, đây chính là nơi ta thiết kế ra những table cho database, từ đó Django ORM đã cung cấp những phương thức xử lý, nghiệp vụ lên database.
- 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
2.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 của Python, cùng với tính đơn giản, đầy đủ, cho phép lập trình viên tập trung vào các vấn đề phức tạp, logic nghiệp vụ cao mà không tốn thời gian cho những rắc rối đã được người khác giải quyết.
Django có mô hình xác thực người truy cập tuyệt vời, nhờ khả năng cấu hình user. Điều này khiến nó trở thành sự lựa chọn hàng đầu khi trang web, ứng dụng cần ưu tiên về bảo mật.
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.
2.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.
- Tính linh hoạt: Các công ty, tổ chức và chính phủ đã sử dụng Django để xây dựng tất cả mọi thứ - từ hệ thống quản lý nội dung đến mạng xã hội đến nền tảng toán khoa học.
-Dễ sử dụng: Django được tạo ra bởi ngôn ngữ lập trình Python và mô hình MVC nên rất dễ ứng dụng trong các dự án Đa ngôn ngữ và được hỗ trợ Multi-Site
-Dễ học: Có nhiều tài liệu hỗ trợ việc học Django, bao gồm cả tài liệu miễn phí trên mạng và sách in Cộng đồng sử dụng Django hiện nay đang phát triển mạnh mẽ, newbie có thể tìm kiếm sự giúp đỡ trên các trang facebook, diễn đàn, blog,
2.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
Ta thừa kế các tính chất của models trong Django và tạo các cơ sở dữ liệu như đã thiết kế, ở đây ta sử dụng database Để khởi tạo cơ sở dữ liệu cho app MyTruyen ta vào thư mục Data/models.py và tạo models như sau - đây cũng 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
Theo 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:
Trong thư mục Data, vào file formRegister.py tạo class PostForm form này được kế thừa từ ModelForm - form mặc định của Django, dùng để pass vào template của trang forum
Trong Controler tạo file ForumView.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 – đây chính là phần Controller trong mô hình MVC
Và bây giờ, ta chỉnh sửa đường dẫn để trang có thể truy cập Ta vào thư mục MyTruyen/urls.py Trước tiên ta cần import ForumView, ArticleDetailView, AddPostView vào urls.py Vì bản thân template forum.html, add_post.html, article_details.html được kết thừa từ lớp ForumView khi đó cần thêm phương thức as_view() để có truy xuất
Trong file urls.py tạo 3 path add_post, article/ và forum Khi ta thực hiện truy cập vào các url này, nó sẽ import và gọi các View tương ứng để xử lý.
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,
Trong thư mục Data, tạo file formRegister.py, form này được kế thừa từ UserCreationForm – form tạo user mặc định của Django, dùng để pass vào template của trang register.
Trong file urls.py tạo 3 path login, logout và register Khi ta thực hiện truy cập vào các url này, nó sẽ import và gọi các View tương ứng để xử lý.
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, tạo thư mục con Auth chứa 2 template là loginPage.html và registerPage.html dùng để render thông tin cần hiển thị cho người dùng với dữ liệu từ các View tương ứng. loginPage.html registerPage.html
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,
Trong thư mục Data, tạo file profileForm.py, form này được kế thừa từ UserChangeForm – form thay đổi thông tin account mặc định của Django, dùng để pass vào template của trang registration/ edit_account.html
Cũng trong thư mục Data/profileForm.py, form này được kế thừa từ PasswordChangeForm – form thay đổi password user mặc định của Django, dùng để pass vào template của trang registration/change-password.html.
Trong file urls.py tạo 2 path password và edit_account Khi ta thực hiện truy cập vào các url này, nó sẽ import và gọi các View tương ứng để xử lý.
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.
Trong thư mục templates, tạo thư mục con registration chứa 2 template là change- password.html và edit_account.html dùng để render thông tin cần hiển thị cho người dùng với dữ liệu từ các View tương ứng. change-password.html
Thiết lập mật khẩu
Cập nhập mật khẩu
{% endblock content %} edit_account.html
Thông tin người dùng
Update Profile
Profile Page and Edit Profile Page– Trang cá nhân và trang chỉnh sửa trang cá nhâ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,
Trong thư mục Data/models.py, tạo một model như sau: class Profile(models.Model): user = models.OneToOneField(User, null=True, on_delete=models.CASCADE) bio = models.TextField() profile_pic = models.ImageField(upload_to='images/',null=True, blank=True) website_url = models.CharField(max_length%5, null=True, blank=True) facebook_url = models.CharField(max_length%5, null=True, blank=True) twitter_url = models.CharField(max_length%5, null=True, blank=True) instagram_url = models.CharField(max_length%5, null=True, blank=True) def str (self): return str(self.user)
Sau đó vào Data/admin.py để đăng ký Profile model vừa tạo admin.site.register(Profile)
Trong file urls.py tạo 2 path edit_profile_page/ và profile/ Khi ta thực hiện truy cập vào các url này, nó sẽ import và gọi các View tương ứng để xử lý. path('edit_profile_page/', EditProfilePageView.as_view(), name="edit_profile_page"), path('profile/', ShowProfilePageView.as_view(), name="show_profile_page"),
Trong Controler tạo file ProfileView.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. from django.shortcuts import render, get_object_or_404 from Data.models import Profile from Data.models import Post from django.views.generic import ListView, DetailView from django.views import generic from django.urls import reverse_lazy from django.contrib.auth.forms import UserChangeForm, PasswordChangeForm from Data.Form.profileForm import * from django.contrib.auth.views import PasswordChangeView class EditProfilePageView(generic.UpdateView): model = Profile template_name = 'Profile/edit_profile_page.html' fields = ['bio', 'profile_pic', 'website_url', 'facebook_url', 'twitter_url', 'instagram_url'] success_url = reverse_lazy('Home Page') class ShowProfilePageView(DetailView): model = Profile template_name = 'Profile/user_profile.html' def get_context_data(self, *args, **kwargs): users = Profile.objects.all() context = super(ShowProfilePageView, self).get_context_data(*args, **kwargs) page_user = get_object_or_404(Profile, id=self.kwargs['pk']) context["page_user"] = page_user return context
Trong thư mục templates, tạo thư mục con registration chứa 2 template là change- password.html và edit_account.html dùng để render thông tin cần hiển thị cho người dùng với dữ liệu từ các View tương ứng. edit_profile_page.html
{% if user.id == profile.user.id %}
CHỈNH SỬA TRANG CÁ NHÂN
Facebook :
Twitter :
Instagram :
Website :
Giới thiệu :
Ảnh hiển thị
You are not the correct User To Edit Page
Ban khong duoc phep o day !
{% if page_user.profile_pic %}
{{ page_user }} {% ifequal page_user|stringformat:"s" user.username %}
Model trong Django
2.7.1 Lý thuyết về Model trong Django
Model trong Django là một cách định nghĩa về cách lưu trữ thông tin, một model bao gồm các trường và các hành động về dữ liệu mà bạn sẽ lưu trữ, định nghĩa này không khác gì định nghĩa lớp trong lập trình hướng đối tượng cả, nói cách khác Model chính là cách gọi khác của Class trong Django Mỗi model sẽ đạ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
Chúng ta định nghĩa model (class) Person có 2 thuộc tính là first_name và last_name: first_name và last_name là một trường của model – một thuộc tính của một lớp – một cột trong một bảng CSDL.
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 xong các model thì chúng ta phải thiết lập để Django sử dụng các model đó, bằng cách chỉnh sửa biến INSTALLED_APPS trong file settings.py.
Ví dụ 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 khai báo đường dẫn 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 như sau:
Sau khi đã khai báo trong file settings.py, bạn phải chạy 2 lệnh là manage.py makemigrations để bảo Django là bạn đã thay đổi cái gì đó trong cấu trúc cơ sở dữ liệu, sau đó là lệnh manage.py migrate để thực hiện cập nhật lại cơ sở dữ liệu.
Các trường ( Field ): Thành phần quan trọng và cũng là thành phần bắt buộc phải có trong một model là danh sách các trường hay các thuộc tính của một lớp.
Mỗi trường phải là một đối tượng kế thừa từ lớp Field, đây là một lớp ảo trong Django. Các lớp Field sẽ cho Django biết kiểu dữ liệu của các cột trong bảng (chẳng hạn như INTEGER, VARCHAR, TEXT)
Mỗi lớp Field nhận một vài tham số khi khởi tạo Ví dụ lớp CharField nhận tham số max_length để biết số lượng kí tự sẽ được dùng trong cột VARCHAR trong CSDL, đây là tham số bắt buộc phải 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 chúng ta đã tạo các lớp model, Django sẽ tự động tạo các phương thức mới trong model đó cho phép bạn thao tác với cơ sở dữ liệu, bạn có thể tạo, sửa, xóa, cập nhật dữ liệu.
Mỗi bản ghi hay mỗi dòng trong từng bảng cơ sở dữ liệu sẽ tương ứng với một đối tượng cụ thể Để tạo một bản ghi trong cơ sở dữ liệu thì chúng ta chỉ cần tạo một đối tượng tương ứng với trong Python rồi gọi phương thức save() là xong
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.
Bạn có thể thay đổi giá trị của các đối tượng trong Python rồi chỉ cần gọi phương thức save() là Django sẽ cập nhật mới trong cơ sở dữ liệu.
Còn nhiều vấn đề liên quan đến Model trong Django nhưng trong phạm vi của bài viết này và việc áp dụng vào bài làm của mình thì chúng tôi chỉ giới thiệu sơ qua đến đây.
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
2.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ị
Tạo user Để có thể đăng nhập vào admin thì trước hết chúng ta phải tạo một tài khoản admin đã vì Django không tạo sẵn cho chúng ta khi tạo project. Để tạo tài khoản thì chúng ta chạy file 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.
Mặc định tại trang admin chúng ta có thể thao tác với 2 bảng là User và Group. Để đăng ký các bảng (hay các mô hình) với admin thì chúng ta chỉ cần dùng phương thức admin.site.register() trong file admin.py mà Django đã tạo cho chúng ta.
Sau khi đã đăng kí xong thì 2 bảng Question và Choice sẽ hiện ra trong giao diện admin.
Khi chúng ta đăng ký các lớp model Question và Choice bằng hàm admin.site.register(), Django sẽ dựa vào các thuộc tính mà chúng ta khai báo trong các lớp đó để hiển thị form trên trang admin Chúng ta có thể quy định Django chỉ chọn một số thuộc tính được phép hiện ra để chỉnh sửa, thay vì hiện ra hết.
ModelAdmin methods : ordeing : Thực hiện sắp xếp các đối tượng theo thuộc tính được gán list_display : kiểm soát trường nào được hiển thị trên trang danh sách thay đổi của quản trị viên. list_per_page : kiểm soát số lượng mục xuất hiện trên mỗi trang danh sách thay đổi quản trị viên được phân trang Theo mặc định, điều này được đặt thành 100. list_display_links : Các list_display_links phương pháp được đưa ra HttpRequest và list hay tuple trả về bởi ModelAdmin.get_list_display() Dự kiến sẽ trả về một trong hai None hoặc một list hoặc tuple các tên trường trên danh sách thay đổi sẽ được liên kết với chế độ xem thay đổi. list_editable : Trả về một lớp ModelFormSet để sử dụng trên trang danh sách thay đổi nếu list_editableđược sử dụng search_fields : phương pháp được đưa ra HttpRequest và dự kiến sẽ trở lại cùng một loại kiểu chuỗi như đối với các search_fields thuộc tính. list_filter : Các đối tượng trong trang danh sách thay đổi có thể được lọc bằng các tra cứu từ chuỗi truy vấn của URL Đây là cách list_filter hoạt động.
Còn nhiều vấn đề liên quan đến ModelAdmin methods trong Django nhưng trong phạm vi của bài viết này và việc áp dụng vào bài làm của mình thì chúng tôi chỉ giới thiệu sơ qua đến đây.
2.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 motheds đã đượ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
Django admin interface : Django cung cấp giao diện quản trị mặc định có thể được sử 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 Nó đọc tập hợp dữ liệu giải thích và cung cấp thông tin về dữ liệu từ mô hình, để cung cấp giao diện tức thì, nơi người dùng có thể điều chỉnh nội dung của ứng dụng
Chạy lệnh sau để thực hiện cài đặt interface : 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 :