Cấu hình template trong Django

Chào các bạn,
Chúng ta lại tiếp tục với việc tìm hiểu python cơ bản, trong những phần trước chúng ta đã biết tạo ứng dụng Django,Bắt đầu Django với Ubuntu. Phần này chúng ta sẽ tìm hiểu việc cấu hình những file html để cấu hình trong Django. Để hưởng ứng việc sử dụng mã nguồn mở Linux, chúng tôi sẽ viết tất cả những ứng dụng trong linux 18.04 như những bài trước về Django.
Django là một trong những framework phát triển web đầy đủ được khuyên dùng nhất tại thời điểm này. Django theo kiến trúc Model-Template-View (MTV). Đây là một điều gì đó tương tự như kiến trúc MVC (Model-View-Controller) truyền thống, nhưng trong Django, views nhìn như các controller hơn và các MVC views thực sự là template của Django.
Các template của Django xác định bố cục và định dạng cuối cùng được xử lý và gửi cho người dùng cuối sau khi phương thức view kết thúc yêu cầu. Kiến trúc MTV cho phép Django kiểm duyệt mã Python và HTML, điều này là cần thiết bởi vì tại thời điểm này, các trình duyệt không hiểu Python.
Trong bài này, chúng ta sẽ điểm qua cách cấu hình template với Django.
Cấu hình thư mục chứa các file template
Chúng tôi giả sử rằng bạn đọc qua bài trước đã tạo được một Django app và có cấu trúc thư mục như thế này.

├── db.sqlite3
├── newproject
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
├── manage.py
└── myApp
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

Chúng ta sẽ tạo một thư mục templates ngang hàng với thư mục myApp

├── db.sqlite3
├── newproject
├── manage.py
└── myApp
└── templates

Bây giờ chúng ta sẽ thông báo địa chỉ của thư mục templates cho Django biết bằng cách cấu hình trong settings.py. Chúng ta tạo một biến TEMPLATE_DIR dưới biến BASE_DIR.

 # Templates Directory
TEMPLATE_DIR = os.path.join(BASE_DIR, "templates")

Điều này sẽ mang lại một đường dẫn tuyệt đối đến thư mục templates của dự án của chúng ta không phân biệt hệ điều hành. Sử dụng phương pháp này có hiệu quả bởi vì, trên hệ điều hành tương thích POSIX, các dấu gạch chéo về phía trước sẽ được sử dụng để phân tách các thư mục, trong khi đó hệ điều hành Windows sẽ sử dụng dấu gạch chéo ngược.
Nếu bạn tự nối các dấu gạch chéo vào các đường dẫn, bạn có thể gặp phải lỗi đường dẫn khi cố chạy mã của mình trên một hệ điều hành khác nhau.
Trong settings.py file chúng ta đi xuống phần TEMPLATES, thường nhìn thấy nó có dạng sau.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
] 

Bây giờ chúng ta thêm TEMPLATE_DIRS vào trong DIRS

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #  Add  'TEMPLATE_DIR' here
        'DIRS': [TEMPLATE_DIR],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]  

Bây giờ đã xong bước cấu hình thư mục template chúng ta lưu và đóng file settings.py lại.
Tạo ra template đầu tiên
Bây giờ chúng ta kiểm tra các bước cấu hình trên bằng cách tạo ra một template đầu tiên. Trong thư mục templates chúng ta tạo một file index.html có nội dung sau.

<!DOCTYPE html>
<head>
    <title>My Site</title>
</head>
<body>
    <h1> Xin chào, Đây là file Index.html được tạo từ diễn đàn pycon.vn</h1>
    <h3>{{ insert_me }}</h3>
</body>
</html>

Đây là một tệp HTML cơ bản, điều kỳ lạ ở đây là biến {{insert_me}}, bất kỳ văn bản nào được bao quanh là cặp dấu ngoặc nhọn là một biến trong các template của Django. Chúng ta sẽ thấy biến này hoạt động với browser như thế nào ngay sau đây.
Chúng ta mở file views.py trong thư mục myApp và thêm vào những dòng sau

from django.shortcuts import render

def index(request):
    my_dict = {"insert_me": "I am from views.py"}
    return render(request,'index.html',context=my_dict)

Chúng ta đang sử dụng Django builtin method render nó là cầu nối đến những file html tĩnh và Python. Hàm render có ba đối số
`

render( request , template_name , context=None)

`
Tiếp theo, chúng ta sẽ map URL trong urls.py.

from my_app import views

urlpatterns = [
    path('admin/', admin.site.urls),
    # configured the URL
    path('',views.index, name="homepage")
]

Lưu và đóng file urls.py lại và run server
`

python manage.py runserver

`Và bạn sẽ thấy trình duyệt sẽ hiển thị như hình dưới sau khi truy nhập vào địa chỉ http://127.0.0.1:8000/


Lưu ý cách biến đó đã chèn chuỗi vào file HTML, đó là lợi thế của các template Django mà khi chúng ta làm cho website động.

2 Likes

Greate tutorial. Cảm ơn bạn.