Tìm hiểu sở lược về Django
Thiết kế mô hình trong Django:
Django phát triển với nhịp độ nhanh, được thiết kế để giúp các tác vụ phát triển web thông thường trở nên nhanh chóng và dễ dàng. Ở Django bạn có thể sử dụng mà không cần cơ sở dữ liệu tuy nhiên nó cũng cung cấp nhiều cú pháp cho mô hình dữ liệu. Ví dụ như ở mysite/news/models.py
:
from django.db import models
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self):
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
$ python manage.py makemigrations
$ python manage.py migrate
Lệnh này makemigrations
sẽ xem xét tất cả các mô hình có sẵn của bạn và tạo di chuyển cho bất kỳ bảng cơ sở dữ liệu. migrate
di chuyển và tạo bảng trong cơ sở dữ liệu của bạn, cũng như cung cấp tùy chọn kiểm soát giản đồ cơ sở dữ liệu.
API trong Django:
Với Django bạn sẽ có sẵn API Python miễn phí và đa dạng để truy cập vào dữ liệu của mình. API được tạo nhanh chóng, không cần tạo mã bằng cách:
# Import the models we created from our "news" app
>>> from news.models import Article, Reporter
# Chưa có reporters nào trong hệ thống.
>>> Reporter.objects.all()
<QuerySet []>
# Tạo mới một Reporter.
>>> r = Reporter(full_name='John Smith')
# Lưu đối tượng vào cơ sở dữ liệu và bạn cần gọi hàm call save()
>>> r.save()
# Bây giờ thì nó đã có id
>>> r.id
1
# Hiện tại đã có reporters trong cơ sở dữ liệu
>>> Reporter.objects.all()
<QuerySet [<Reporter: John Smith>]>
>>> r.full_name
'John Smith'
# Django cung cấp một API phong phú dừng tra cứu cơ sở dữ
>>> Reporter.objects.get(id=1)
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__startswith='John')
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__contains='mith')
<Reporter: John Smith>
>>> Reporter.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist: Reporter matching query does not exist.
# Tạo một Article.
>>> from datetime import date
>>> a = Article(pub_date=date.today(), headline='Django is cool',
... content='Yeah.', reporter=r)
>>> a.save()
# Bây giờ Article đã nằm trong cơ sở dữ liệu.
>>> Article.objects.all()
<QuerySet [<Article: Django is cool>]>
>>> r = a.reporter
>>> r.full_name
'John Smith'
>>> r.article_set.all()
<QuerySet [<Article: Django is cool>]>
>>> Article.objects.filter(reporter__full_name__startswith='John')
<QuerySet [<Article: Django is cool>]>
>>> r.full_name = 'Billy Goat'
>>> r.save()
# Xoá đối tượng bằng deleted()
>>> r.delete()
Giao diện quản trị:
Khi các mô hình của bạn được xác định, Django có thể tự động tạo giao diện quản trị chuyên nghiệp, sẵn sàng để sử dụng - trang web được tạo ra từ Django cho phép người dùng xác thực lại, thay đổi và xóa các đối tượng. Việc bạn cần làm duy nhất là tạo mô hình của bạn trong trang web quản trị ở mysite/news/models.py
:
from django.db import models
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
Và trong mysite/news/admin.py
from django.contrib import admin
from . import models
admin.site.register(models.Article)
Thiết kế URL:
Một URL đẹp và gọn gàng là một chi tiết tuy nhỏ nhưng lại quan trọng giúp một ứng dụng web đạt chất lượng cao. Django khuyến khích thiết kế URL đẹp và không đặt bất kỳ Cruft nào vào URL ví dụ như: .php
hoặc .asp
.
Để thiết kế URL cho một ứng dụng, bạn cần tạo một mô -đun Python gọi là URLConf và một bảng nội dung cho ứng dụng của bạn, nó chứa liên kết giữa các URL và các chức năng tại Python. URLConfs cũng phục vụ để tách URL từ mã Python. Ta có một ví dụ urlconf đối với Reporter
/ Article
tại mysite/news.urls.py
:
from django.urls import path
from . import views
urlpatterns = [
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<int:pk>/', views.article_detail),
]
Đoạn mã trên thể hiện liên kết của các đường dẫn URL với các hàm gọi tại Python. Django sẽ chạy qua từng đường dẫn theo thứ tự và dừng lại ở đường dẫn đầu tiên phù hợp với URL được yêu cầu. Và khi một trong các URL khớp với nhau, Django sẽ gọi chế độ xem đã cho và mỗi chế độ xem được chuyển đến một đối tượng theo yêu cầu nơi chứa siêu dữ liệu được yêu cầu và các giá trị đã được ghi.
Ví dụ: nếu người dùng yêu cầu URL/bài viết/2005/05/39323/, thì Django sẽ gọi chức năng .news.views.article_detail(request, year=2005, month=5, pk=39323)
Nguồn: django tutorial