DJANGO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Hướng dẫn tạo Template Django trong Python

Trong quá trình phát triển web với Django, việc tạo và quản lý các giao diện người dùng là một phần quan trọng và không thể thiếu. Django Templates là một công cụ mạnh mẽ giúp chúng ta xây dựng các trang web linh hoạt và dễ bảo trì. Trong bài viết này, mình sẽ tìm hiểu sâu hơn về Django Templates, từ cách sử dụng các biến và tags cho đến cách tổ chức và kết hợp các template. Hãy cùng freetuts.net bắt đầu tìm hiểu về cách tạo Template Django trong Python!

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Django Templates là gì?

Screenshot 202024 05 16 20000333 png

Django Templates là một phần của framework Django, được sử dụng để tạo các giao diện người dùng linh hoạt và dễ bảo trì trong ứng dụng web. Templates trong Django cho phép chúng ta tách biệt logic của ứng dụng và giao diện người dùng, giúp làm cho mã nguồn trở nên dễ đọc và bảo trì hơn.

Mục đích sử dụng Django Templates

  • Tách biệt logic và giao diện người dùng: Django Templates cho phép tách biệt logic xử lý dữ liệu và giao diện người dùng ra khỏi nhau. Điều này giúp làm cho mã nguồn trở nên dễ đọc, bảo trì và phát triển.

    Bài viết này được đăng tại [free tuts .net]

  • Tạo ra các trang web linh hoạt: Sử dụng Django Templates, chúng ta có thể tạo ra các trang web linh hoạt với nhiều loại dữ liệu khác nhau, từ dữ liệu tĩnh đến dữ liệu động được truy vấn từ cơ sở dữ liệu.

  • Tích hợp dễ dàng: Django Templates được tích hợp một cách dễ dàng vào các view của Django, cho phép tạo ra các trang web có tính tương tác cao và đáp ứng nhu cầu của người dùng một cách linh hoạt.

  • Tăng hiệu suất phát triển: Bằng cách tách biệt logic và giao diện người dùng, Django Templates giúp tăng hiệu suất phát triển bằng cách cho phép các nhà phát triển chia nhỏ công việc và làm việc song song trên các phần khác nhau của ứng dụng.

Ngôn ngữ Template của Django (DTL)

Django Template Language (DTL) là ngôn ngữ template được Django cung cấp để tạo ra các template linh hoạt và mạnh mẽ. DTL bao gồm các phần sau:

  • Biến (Variables): Được bao quanh bởi cặp dấu ngoặc nhọn {{ và }}, biến trong DTL cho phép chúng ta hiển thị dữ liệu động trong các template.

  • Tags: Được bao quanh bởi cặp dấu {% và %}, tags trong DTL được sử dụng để thực hiện các thao tác logic như vòng lặp, câu điều kiện và truy vấn dữ liệu từ cơ sở dữ liệu.

  • Filters: Filters trong DTL được sử dụng để biến đổi dữ liệu trước khi hiển thị nó trong template. Ví dụ, chuyển đổi chữ hoa, chữ thường hoặc định dạng ngày tháng.

  • Comments: Được bao quanh bởi cặp dấu {# và #}, comments trong DTL cho phép chúng ta thêm các chú thích vào các template mà không ảnh hưởng đến việc render chúng ra ngoài.

  • Kết hợp logic và giao diện: DTL cho phép kết hợp logic xử lý dữ liệu và giao diện người dùng trong cùng một file template một cách dễ dàng và linh hoạt.

Các phần tử cơ bản trong Django Templates bằng Python

Biến (Variables)

Trong Django Templates, biến được sử dụng để hiển thị dữ liệu động trong các template. Biến được bao quanh bởi cặp dấu ngoặc nhọn {{ và }}.

Ví dụ:

<p>Xin chào, {{ username }}!</p>

Trong đoạn mã trên, {{ username }} là một biến, nó sẽ được thay thế bằng giá trị của biến username.

Tag

Tags trong Django Templates được sử dụng để thực hiện các thao tác logic hoặc lặp lại. Tags được bao quanh bởi cặp dấu {% và %}.

Tags cơ bản

Ví dụ về một số tags cơ bản:

  • {% if condition %} ... {% endif %}: Sử dụng để thực hiện một điều kiện và hiển thị nội dung trong trường hợp điều kiện đúng.

  • {% for item in list %} ... {% endfor %}: Sử dụng để lặp qua các phần tử trong một danh sách và hiển thị nội dung.

Ví dụ:

{% if user.is_authenticated %}
    <p>Xin chào, {{ user.username }}!</p>
{% else %}
#Bài viết này được đăng tại freetuts.net
    <p>Vui lòng đăng nhập để tiếp tục.</p>
{% endif %}

Tags điều khiển (Control Tags)

Các tags điều khiển được sử dụng để điều khiển luồng logic trong template. Ví dụ:

  • {% csrf_token %}: Tạo ra một mã token để bảo vệ khỏi tấn công CSRF.

Filters

Filters trong Django Templates được sử dụng để biến đổi dữ liệu trước khi hiển thị. Filters được áp dụng bằng cách sử dụng dấu gạch chân sau biến hoặc giá trị.

Ví dụ:

<p>{{ content|truncatewords:20 }}</p>

Trong đoạn mã trên, truncatewords là một filter được sử dụng để giảm số từ trong biến content xuống còn 20 từ.

Comments

Comments trong Django Templates cho phép chú thích trong code mà không ảnh hưởng đến việc render template.

Ví dụ:

{# Đây là một comment trong Django Templates #}

Comments sẽ không được hiển thị trong output của template.

Thực hành tạo và sử dụng Django Templates trong Python

Tạo và cấu trúc thư mục cho Templates

  • Đầu tiên, tạo một thư mục có tên là templates trong thư mục của ứng dụng Django của bạn.

  • Trong thư mục templates, tạo các thư mục con tương ứng với tên của các ứng dụng Django trong dự án của bạn. Ví dụ, nếu bạn có ứng dụng có tên là blog, bạn sẽ tạo một thư mục có tên là blog bên trong thư mục templates.

Tạo các template cơ bản

  • Trong mỗi thư mục của ứng dụng Django, bạn có thể tạo các file template với các phần mở rộng như .html, .txt, vv.

  • Ví dụ, bạn có thể tạo một template có tên là home.html trong thư mục templates/blog để hiển thị trang chủ của blog.

Sử dụng biến và tags trong template

Trong template, bạn có thể sử dụng các biến để hiển thị dữ liệu động và sử dụng các tags để thực hiện các thao tác logic.

Ví dụ, bạn có thể sử dụng biến {{ username }} để hiển thị tên người dùng đang đăng nhập.

<p>Xin chào, {{ username }}!</p>

Bạn cũng có thể sử dụng các tags như {% if condition %} ... {% endif %} để thực hiện các điều kiện.

Truyền dữ liệu từ view function đến template

Trong view function, bạn có thể tạo một dictionary chứa dữ liệu mà bạn muốn truyền cho template.

Sau đó, bạn có thể truyền dictionary này vào hàm render() để render template cùng với dữ liệu.

from django.shortcuts import render
#Bài viết này được đăng tại freetuts.net
def home(request):
    username = 'John'
    return render(request, 'blog/home.html', {'username': username})

Kết hợp các template và sử dụng base template

Đôi khi, bạn có thể muốn sử dụng một template chung làm cơ sở cho các template khác. Điều này giúp tránh việc lặp lại mã HTML.

Bạn có thể tạo một template cơ sở (base template) có tên là base.html và sử dụng nó như một template cha cho các template khác.

<!-- base.html -->
#Bài viết này được đăng tại freetuts.net
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
    <div class="container">
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>
<!-- home.html -->

{% extends 'base.html' %}

{% block title %}Home{% endblock %}
#Bài viết này được đăng tại freetuts.net
{% block content %}
    <h1>Xin chào, {{ username }}!</h1>
{% endblock %}

Trong các template con, bạn có thể sử dụng {% extends 'base.html' %} để kế thừa từ template cơ sở và sử dụng {% block %} để ghi đè nội dung của các block trong template cơ sở.

Cấu hình và sử dụng các Static Files trong Python

Tạo và cấu trúc thư mục cho Static Files

Bắt đầu bằng việc tạo một thư mục có tên là static trong thư mục gốc của dự án Django của bạn.

├── static
|  ├── css
|  ├── images
|  └── js

Trong thư mục static, bạn có thể tạo các thư mục con để phân chia file tĩnh theo loại như css, js, images, vv.

Cấu hình và sử dụng Static Files trong Templates

Trước tiên, thêm đường dẫn đến thư mục static vào biến STATICFILES_DIRS trong cấu hình của Django.

# settings.py
#Bài viết này được đăng tại freetuts.net
STATICFILES_DIRS = [
    BASE_DIR / 'static',
]

Trong template của bạn, bạn có thể sử dụng tag {% load static %} để load các file tĩnh.

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Site</title>
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>
    <h1>Welcome to my site!</h1>
#Bài viết này được đăng tại freetuts.net
    <img src="{% static 'images/logo.png' %}" alt="Logo">
    <script src="{% static 'js/app.js' %}" defer></script>
</body>
</html>

Trong ví dụ trên, {% static 'css/style.css' %} sẽ tạo ra một URL tĩnh cho file CSS trong thư mục static/css, và tương tự cho các file JS và hình ảnh.

django start project js png

Kết bài

Qua bài viết này, mình đã tìm hiểu cách tạo và sử dụng Django Templates trong dự án Django của mình. Mình đã đi qua các bước để tạo và cấu trúc thư mục cho Templates, từ việc tạo thư mục gốc đến việc tạo các thư mục con cho từng ứng dụng Django và tạo các template cơ bản trong từng thư mục ứng dụng.

Mình đã thấy cách tạo các template cơ bản như trang chủ, trang chi tiết, và các trang khác trong dự án của mình. Bằng cách sử dụng Django Templates, có thể dễ dàng tái sử dụng mã HTML và hiển thị dữ liệu động từ view functions lên các trang web của chúng ta.

Hơn nữa, ta cũng đã tìm hiểu cách sử dụng các biến, tags, filters và comments trong Django Templates để tạo ra các trang web linh hoạt và dễ bảo trì. Các ví dụ cụ thể và mã nguồn minh họa đã giúp chúng ta hiểu rõ cách thức hoạt động của mỗi phần tử trong Templates.

Cuối cùng,mình đã thực hành kết hợp các template và sử dụng base template để giảm thiểu việc lặp lại mã HTML và tạo ra cấu trúc tổ chức hợp lý cho dự án của mình.

Cùng chuyên mục:

Tài liệu tham khảo nhanh về Regex trong Python

Tài liệu tham khảo nhanh về Regex trong Python

Hàm Flags của Regex trong Python

Hàm Flags của Regex trong Python

Hàm split() của Regex trong Python

Hàm split() của Regex trong Python

Hàm finditer() của Regex trong Python

Hàm finditer() của Regex trong Python

Hàm fullmatch() của Regex trong Python

Hàm fullmatch() của Regex trong Python

Hàm match() của Regex trong Python

Hàm match() của Regex trong Python

Hàm sub() của Regex trong Python

Hàm sub() của Regex trong Python

Hàm search() trong Python Regex

Hàm search() trong Python Regex

Hàm findall() của regex trong Python

Hàm findall() của regex trong Python

Lookbehind trong Regex của Python

Lookbehind trong Regex của Python

Lookahead trong Python Regex

Lookahead trong Python Regex

Alternation Regex trong Python

Alternation Regex trong Python

Tìm hiểu Backreferences trong regex của Python

Tìm hiểu Backreferences trong regex của Python

Nhóm Non-capturing trong Regex Python

Nhóm Non-capturing trong Regex Python

Các nhóm Capturing trong regex của Python

Các nhóm Capturing trong regex của Python

Sets và Ranges trong Regex của Python

Sets và Ranges trong Regex của Python

Lượng từ non-greed trong Regex của Python

Lượng từ non-greed trong Regex của Python

Chế độ Greedy trong Regex Python

Chế độ Greedy trong Regex Python

Các lượng từ trong Regex của Python

Các lượng từ trong Regex của Python

Regex Word Boundary trong Python

Regex Word Boundary trong Python

Top