Hướng dẫn Django - Python - Day 6: Models và Databases
Hướng dẫn Django - Python - Day 6: Models và Databases
I. Giới thiệu
- Django sử dụng models để phục vụ cho việc cập nhật hoặc lấy ra dữ liệu của người dùng.
- Django sử dụng SQL Lite và các SQL backend khác để quản lý databases.
- SQL có thể coi như một bảng dữ liệu, các cột là các dữ liệu cần lưu trữ, các hàng là các dữ liệu tương ứng của người dùng.
- Ta có thể migrate/nhập dữ liệu vào SQL của Django bằng lệnh django manage.py migrate.
- Sau đó áp dụng thay đổi dữ liệu cho app1 hay bất kì một cách nhanh chóng bằng lệnh:
django manage.py makemigrate app1
II. Tạo Django models
- Sửa file first_app/models.py như sau và đọc giải thích:
- Vào file first_app/admin.py để đăng kí các model.
from django.contrib import admin
- Quay lại Anaconda prompt để tạo một Super user - để login vào trang admin.
gõ lệnh: python manage.py createsuperuser
- Nhập user/password/email - Nhớ để đăng nhập lai.
- Run server: python manage.py runserver
- Vào trang admin: http://localhost:8000/admin
- Đăng nhập bằng superuser vừa tạo. Đây là kết quả trang admin với các models bạn vừa tạo.
Lưu ý: Nếu trang admin không thêm được dữ liệu, có thể là do version django không tương thích với version của sql. Bạn tạo một môi trường khác với phiên bản Django 1.10 trở xuống và python 3.5.
Sau đó sửa cú pháp trong 2 file urls thành:
I. Giới thiệu
- Django sử dụng models để phục vụ cho việc cập nhật hoặc lấy ra dữ liệu của người dùng.
- Django sử dụng SQL Lite và các SQL backend khác để quản lý databases.
- SQL có thể coi như một bảng dữ liệu, các cột là các dữ liệu cần lưu trữ, các hàng là các dữ liệu tương ứng của người dùng.
- Ta có thể migrate/nhập dữ liệu vào SQL của Django bằng lệnh django manage.py migrate.
- Sau đó áp dụng thay đổi dữ liệu cho app1 hay bất kì một cách nhanh chóng bằng lệnh:
django manage.py makemigrate app1
II. Tạo Django models
- Sửa file first_app/models.py như sau và đọc giải thích:
from django.db import models
# Create your models here.
#tạo dữ liệu Topic bằng một class sử dụng models
class Topic(models.Model):
# set số kí tự lớn nhất cho dữ liệu Topic là 264
# set unique bằng true để chỉ dữ liệu Topic là duy nhất
top_name = models.CharField(max_length = 264, unique = True)
#dùng hàm __str__ đẻ hiển thị dữ liệu của top_name
def __str__(self):
return self.top_name
class Webpage(models.Model):
#Class Webpage sẽ có dữ liệu topic sẽ lấy key từ
#dữ liệu top_name.
#on_delete - many to one relationship - Một topic có thể có nhiếu Webpage
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
#Webpage cũng có một dữ liệu về name
name = models.CharField(max_length = 264, unique = True)
#và một dữ liệu url, CharField vs URLField vs DateField
#là các phương thức có sẵn của models.
url = models.URLField(unique = True)
def __str__(self):
return self.name
class AccessRecord(models.Model):
name = models.ForeignKey(Webpage, on_delete=models.CASCADE)
date = models.DateField()
def __str__(self):
#trả date về dạng string
return str(self.date)
- Vào file first_app/admin.py để đăng kí các model.
from django.contrib import admin
from first_app.models import Topic, AccessRecord, Webpage
# Register your models here.
# Đăng kí để các models có thể hiện trong trang admin.
admin.site.register(Topic)
admin.site.register(AccessRecord)
admin.site.register(Webpage)
- Quay lại Anaconda prompt để tạo một Super user - để login vào trang admin.
gõ lệnh: python manage.py createsuperuser
- Nhập user/password/email - Nhớ để đăng nhập lai.
- Run server: python manage.py runserver
- Vào trang admin: http://localhost:8000/admin
- Đăng nhập bằng superuser vừa tạo. Đây là kết quả trang admin với các models bạn vừa tạo.
Lưu ý: Nếu trang admin không thêm được dữ liệu, có thể là do version django không tương thích với version của sql. Bạn tạo một môi trường khác với phiên bản Django 1.10 trở xuống và python 3.5.
Sau đó sửa cú pháp trong 2 file urls thành:
urlpatterns = [
#Import function idex của view
#path('first_app/', views.index, name = 'index'),
#Sử dụng include để tạo page mới - tạo file urls.py trong
first_app
url(r'^$', include('first_app.urls')),
url(r'^admin/', admin.site.urls),
Nhận xét
Đăng nhận xét