/ / Hướng dẫn tạo và quản lý sên Django cho người mới bắt đầu

Hướng dẫn tạo và quản lý sên Django cho người mới bắt đầu

Là một nhà phát triển web, việc tối ưu hóa trải nghiệm người dùng cho ứng dụng web của bạn là rất quan trọng. Để cải thiện trải nghiệm người dùng và khả năng hiển thị của công cụ tìm kiếm, hãy sử dụng URL thân thiện với người dùng có sên trong Django. Tạo URL bằng sên dễ dàng như viết một hàm, cho phép bạn tạo các URL ngắn gọn và mô tả dễ hiểu cho người dùng và công cụ tìm kiếm. Điều này nâng cao khả năng sử dụng và khả năng tiếp cận đồng thời tăng thứ hạng của công cụ tìm kiếm.


Tạo một dự án Django

Django cung cấp một số phương pháp để tạo sên và sử dụng chúng trên trang web của bạn. Để minh họa các cách khác nhau để triển khai slug, hướng dẫn này sẽ hướng dẫn bạn cách xây dựng một ứng dụng web blog đơn giản.

Trước khi thiết lập dự án Django, hãy tạo và kích hoạt môi trường ảo để cài đặt các phụ thuộc cần thiết. Sau khi kích hoạt môi trường ảo của bạn, hãy làm theo các bước sau để thiết lập dự án của bạn:

  • Cài đặt Django bằng cách sử dụng lệnh pip trong dòng lệnh của bạn:

 pip install django
  • Tạo một dự án bằng cách sử dụng quản trị viên django tính thiết thực. Hướng dẫn này sẽ sử dụng project_core như tên dự án.

 django-admin startproject project_core .
  • Tạo một ứng dụng có tên công thức nấu ăn.

 python manage.py startapp recipes
  • Thêm ứng dụng của bạn vào các ứng dụng đã cài đặt trong dự án của bạn cài đặt.py tài liệu.

 INSTALLED_APPS = [
    '...'
    'recipes',
]
  • Chạy ứng dụng của bạn bằng cách gõ lệnh sau trong công cụ dòng lệnh của bạn:

 python manage.py runserver
  • Hướng đến http://127.0.0.1:8000/ trong trình duyệt của bạn. Bạn sẽ thấy trang này:

tên lửa có thông báo cho biết django đã được cài đặt thành công

  • Định cấu hình mẫu URL trong dự án của bạn url.py tài liệu

 from django.urls import path, include

urlpatterns = [
    '...',
    path('', include('recipes.urls'))
]

Tạo một con sên trong Django

Để tạo sên trong Django, bạn cần đưa trường sên vào mô hình của mình. Làm theo các bước sau để tạo slug trong Django.

Tạo một mô hình

trong bạn mô hình.py tệp, tạo mô hình mới và bao gồm trường sên. Đây là một ví dụ:

 class Recipe(models.Model):
    name = models.CharField(max_length=225, blank=False, null=False)
    ingredients = models.TextField(blank=False, null=False)
    instructions = models.TextField(blank=False, null=False)
    date_created = models.DateTimeField(auto_now=True)
    slug = models.SlugField(null = True, blank=True, unique=True)

Trong ví dụ trên, mô hình Công thức chứa một trường có tên sên. Các sên trường có các thuộc tính, vô giá trịtrống đặt thành ĐÚNG VẬY.

Áp dụng di chuyển cho mô hình của bạn

Sau khi tạo mô hình, bạn nên chạy lệnh sau trong công cụ dòng lệnh để tạo bảng trong cơ sở dữ liệu của mình:

 python manage.py makemigrations && python manage.py migrate

Lệnh trên trước tiên sẽ tạo một tệp di chuyển và sau đó cập nhật cơ sở dữ liệu bằng cách thực hiện các hướng dẫn bên trong tệp di chuyển.

Thêm dữ liệu vào cơ sở dữ liệu của bạn

Đăng ký mô hình của bạn bằng cách nhập thông tin sau vào quản trị viên.py tài liệu:

 from django.contrib import admin
from .models import Recipe

admin.site.register(Recipe)

Tiếp theo, hãy mở công cụ dòng lệnh của bạn và tạo một siêu người dùng cho bảng quản trị của bạn bằng cách chạy lệnh này:

 python manage.py createsuperuser

Lệnh trên sẽ đưa bạn qua các bước được mô tả trong hình ảnh này:

một dòng lệnh hiển thị quá trình tạo siêu người dùng trong Django

Sau khi tạo một siêu người dùnghãy khởi động máy chủ cục bộ của bạn bằng lệnh sau:

 python manage.py runserver

Khi máy chủ của bạn khởi động, bạn nên điều hướng đến http://127.0.0.1:8000/admin/hãy đăng nhập bằng thông tin chi tiết bạn đã sử dụng để tạo siêu người dùngvà thêm thủ công một số công thức nấu ăn vào cơ sở dữ liệu của bạn. Bạn nên chú ý đến lĩnh vực slug.

bảng quản trị django

Tạo Chế độ xem cho ứng dụng của bạn

mở của bạn lượt xem.py tệp và tạo hai chế độ xem cho ứng dụng của bạn. Chế độ xem đầu tiên sẽ chỉ hiển thị tổng quan về công thức nấu ăn của bạn trong khi chế độ xem thứ hai sẽ cung cấp thêm chi tiết về từng công thức. Bạn có thể sử dụng các chế độ xem này trong dự án của mình:

 from django.shortcuts import render, get_object_or_404
from .models import Recipe


def recipe_list(request):
    recipes = Recipe.objects.all()
    return render(request, 'recipes/recipe_list.html', {"recipes":recipes})


def recipe_detail(request, recipe_slug):
    recipe = get_object_or_404(Recipe, slug=recipe_slug)
    return render(request, 'recipes/recipe_detail.html', {'recipe': recipe})

Trong đoạn mã trên, công thức_list view trả về danh sách tất cả các công thức cho mẫu. Mặt khác, các công thức_chi tiết chế độ xem trả về một công thức duy nhất cho mẫu. Chế độ xem này có một tham số bổ sung được gọi là công thức_slug được sử dụng để lấy sên cho một công thức cụ thể.

Định cấu hình các mẫu URL cho chế độ xem của bạn

Trong thư mục ứng dụng của bạn (hoặc công thức thư mục), tạo một tệp có tên url.py để thêm đường dẫn URL cho ứng dụng của bạn. Đây là một ví dụ:

 from django.urls import path
from .views import recipe_list, recipe_detail

urlpatterns = [
    path('', recipe_list, name='recipe-home'),
    path('recipe/<slug:recipe_slug>/', recipe_detail, name='recipe_detail'),
]

Trong đoạn mã trên, đường dẫn thứ hai đưa sên vào URL của trang.

Tạo mẫu cho ứng dụng của bạn

Để hiển thị công thức nấu ăn trong trình duyệt, hãy tạo mẫu cho chế độ xem của bạn. Một mẫu nên dành cho công thức_list xem trong khi cái kia nên dành cho công thức_chi tiết xem. Để sử dụng sên trong mẫu của bạn, hãy làm theo định dạng này, {% url ‘view_name’ công thức.slug %}. Dưới đây là hai ví dụ bạn có thể sử dụng trong mã của mình:

 
{% extends 'base.html' %}

{% block content %}
    <h1 class="my-5 text-center">Recipes</h1>
    <center>
        <ul class="list-group w-75">
            {% for recipe in recipes %}
              <li class="list-group-item my-3">
                <h2 class="mb-3">
                  <a href="{% url 'recipe_detail' recipe.slug %}">
                    {{ recipe.name }}
                  </a>
                </h2>
                <p class="w-50">
                  Ingredients: {{ recipe.ingredients }}
                </p>
                <p class="text-muted">
                  Created: {{ recipe.date_created }}
                </p>
              </li>
            {% empty %}
              <li class="list-group-item">No recipes found.</li>
            {% endfor %}
          </ul>
    </center>
{% endblock %}

Mẫu HTML ở trên sẽ liệt kê tất cả các công thức nấu ăn trong cơ sở dữ liệu của bạn và hiển thị Không tìm thấy công thức nào nếu không có công thức nấu ăn. Nó sử dụng các lớp Bootstrap để tạo kiểu. Bạn có thể học cách sử dụng Bootstrap với Django. Mẫu trên sẽ trông như thế này trong trình duyệt:

một danh sách các công thức nấu ăn trong một trình duyệt web

 
{% extends 'base.html' %}

{% block content %}
  <center>
    <div class="w-75">
      <h1 class="mt-5 mb-4">{{ recipe.name }}</h1>
      <h3>Ingredients</h3>
      <p>{{ recipe.ingredients }}</p>
      <h3>Instructions</h3>
      <p>{{ recipe.instructions }}</p>
      <p class="text-muted">Created: {{ recipe.date_created }}</p>
    </div>
  </center>
{% endblock %}

Mẫu HTML ở trên trả về thông tin chi tiết về một công thức cụ thể. Trên trình duyệt, trang trên sẽ trông như thế này:

Một trang sử dụng sên và hiển thị công thức món Gà cay húng quế kiểu Thái

Bạn sẽ nhận thấy rằng URL hiện chứa bất kỳ sên nào bạn đã thêm vào cơ sở dữ liệu của mình cho mỗi công thức. Nếu bạn không hiểu cách thức hoạt động của hệ thống mẫu, trước tiên bạn nên tìm hiểu về kế thừa mẫu trong Django và kiến ​​trúc MVT của Django.

Tự động tạo sên trong Django

Với sên, điều bạn thực sự muốn là tự động tạo chúng dựa trên một trường trong mô hình của bạn. Để làm điều này, bạn phải sửa đổi cứu() trong mô hình của bạn và chỉ định các quy tắc của riêng bạn trước khi các đối tượng được lưu vào cơ sở dữ liệu. Đây là một ví dụ đơn giản mà bạn có thể thêm vào lớp mô hình của mình:

 
from django.template.defaultfilters import slugify

def save(self, *args, **kwargs):
    if not self.slug:
        self.slug = slugify(self.name)
    super().save(*args, **kwargs)

Hàm trên trước tiên kiểm tra xem có tồn tại slug cho đối tượng mô hình hay không. Nếu không có sên, nó sử dụng đóng cặn để tạo một từ trường tên trong mô hình. Sau khi ghi đè cứu() phương pháp, hãy mở bảng quản trị của bạn và thêm một số công thức nấu ăn. Lần này, bạn không cần phải điền vào trường sên vì nó sẽ tự động được điền sau khi bạn lưu công thức của mình.

Nếu bạn điều hướng đến trang chi tiết của công thức mới được thêm vào, bạn sẽ thấy rằng URL sử dụng tên công thức làm sên.

trang với món bánh tét nhân đậu đen chay dùng sên ngon

Đôi khi, bạn sẽ có nhiều công thức nấu ăn có cùng tên và điều đó sẽ gây ra lỗi trong sên của bạn. Bạn có thể khắc phục điều này bằng cách thêm một yếu tố duy nhất vào sên của mình, chẳng hạn như ngày tạo. Đây là một ví dụ đơn giản:

 self.slug = slugify(self.name + "-" + str(self.date_created))

Sử dụng sên để nâng cao trải nghiệm URL

Không giống như cũ tốt pk, sên mang lại nhiều lợi ích bao gồm tính linh hoạt và tính di động vì chúng không bị ràng buộc với các mã định danh URL cụ thể, chẳng hạn như khóa chính. Do đó, nếu bạn thay đổi cấu trúc cơ sở dữ liệu hoặc di chuyển dữ liệu của mình, bạn vẫn có thể duy trì các URL nhất quán. Sên cũng nâng cao tính thân thiện với SEO.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *