Môi trường phát triển:
Python 3.9; PyCharm 2021 Ultimate; Windows 10 pro x64, PostgreSQL 13.
Tạo dự án
Bấm Shift + F9 để chạy debug. Truy cập http://127.0.0.1:8000/ để xem kết quả.
Một web-app đã hoàn thành xong, gồm cả back-end và front-end. Để truy cập trang quản trị, truy cập URL http://127.0.0.1:8000/admin
Tuy nhiên, vấn đề là chúng ta không biết username, password là gì. Vậy phải tạo tài khoản admin.
Cài đặt gói
# DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': BASE_DIR / 'db.sqlite3',# }# }
DATABASES ={'default':{'ENGINE':'django.db.backends.postgresql_psycopg2','NAME':'mydjango','USER':'postgres','PASSWORD':'postgres','HOST':'127.0.0.1','PORT':'5432',}}
Mã nguồn đoạn này: https://github.com/donhuvy/mydjango/blob/main/djangoProject/settings.py#L84-L93
Các câu lệnh đã dùng
pip install django psycopg2
python manage.py migrate
python manage.py createsuperuser
Như vậy, với IDE mạnh, các dòng mã nguồn có sẵn, bạn dễ dàng tạo mới một web-app có cả front-end, back-end, có cả bảo mật, phân quyền, và chạy trên một hệ quản trị cơ sở dữ liệu mạnh mẽ là PostgreSQL 13.
Kiểm tra phiên bản Django
Trong trường hợp bạn không dùng IDE, mà tạo mới một project bằng commnad line
Tạo app
Tạo mới app
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.defindex(request):return HttpResponse("Chào Minh Thu. Bạn đang ở trang chủ của ứng dụng Bình chọn.")
Tạo mới file urls.py
from django.urls import path
from.import views
urlpatterns =[
path('', views.index, name='index'),]
Vào trong phần cấu hình url của ứng dụng tổng, khai báo thêm url
Kết quả
Tạo model
from django.db import models
# Create your models here.classQuestion(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')classChoice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Khai báo app bình chọn trong ứng dụng tổng
Chạy lệnh migration dữ liệu, từ model sẽ sinh ra table trong database PostgreSQL
python manage.py makemigrations polls
python manage.py sqlmigrate polls 0001
python manage.py migrate
Thật kỳ diệu
Refresh lại database để xem table đã tự động được tạo ra từ Model trong code Python
(Cảm giác cứ như là Package Manage Console, chạy Migration trong .NET Core 5.x với Entity Framework Core vậy)
Dùng thử ORM của Django xem API query C.R.U.D.S. dữ liệu thế nào
python manage.py shell
from polls.models import Choice, Question
Question.objects.all()
from django.utils import timezone
q = Question(question_text="Có gì mới không Thu?", pub_date=timezone.now())
q.save()
Xem kết quả trong database, thật tuyệt vời, có thể tin được
Update bản ghi
Xem kết quả trong database PostgreSQL đã được cập nhật
Các API query dữ liệu rất mạnh mẽ.
Hiển thị nội dung từ database
Hãy tạo ra thay đổi trong model, cho mỗi model có thêm phương thức in ra nội dung, hãy nhìn diff trong code https://github.com/donhuvy/mydjango/commit/b939c8d27437abb69d264aad126dde0c03152b59?branch=b939c8d27437abb69d264aad126dde0c03152b59&diff=split
Thêm phương thức tìm bản ghi mới tạo: https://github.com/donhuvy/mydjango/commit/b8f433951d9503d7d39f6cb70c99d864278a49f6?branch=b8f433951d9503d7d39f6cb70c99d864278a49f6&diff=split
Bài viết tham khảo phần lớn từ https://docs.djangoproject.com/en/3.2/#first-steps . Mã nguồn: https://github.com/donhuvy/mydjango.git
Nguồn: viblo.asia