Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

Hướng dẫn Django

Django Trang chủ Django Giới thiệu Django Bắt đầu Tạo môi trường ảo Cài đặt Django Django Tạo dự án Django Tạo ứng dụng Django Lượt xem Django URLs Mẫu Django Django Mô hình Django Chèn dữ liệu Cập nhật Django Dữ liệu Django Xóa dữ liệu Mô hình cập nhật Django

Hiển thị dữ liệu

Mẫu chuẩn bị và chế độ xem Thêm liên kết đến chi tiết Thêm mẫu chính Thêm trang chỉ mục chính Mẫu Django 404 Thêm chế độ xem thử nghiệm

Quản trị viên

Django Quản trị viên Tạo người dùng Bao gồm các mô hình Đặt danh sách Hiển thị Cập nhật thành viên Thêm thành viên Xóa thành viên

Cú pháp Django

Biến Django Thẻ Django Django If Else Django cho vòng lặp Django Bình luận Django Bao gồm

Bộ truy vấn

Giới thiệu Bộ truy vấn Bộ truy vấn Nhận Bộ truy vấn Lọc Thứ tự truy vấn theo

Tệp tĩnh

Thêm tệp tĩnh Cài đặt WhiteNoise Thu thập tệp tĩnh Thêm tệp tĩnh toàn cầu Thêm kiểu cho dự án

PostgreSQL

Giới thiệu PostgreSQL Tạo tài khoản AWS Tạo cơ sở dữ liệu trong RDS Kết nối với cơ sở dữ liệu Thêm thành viên

Triển khai Django

Elastic Beanstalk (EB) Tạo các yêu cầu.txt Tạo django.config Tạo tệp .zip Triển khai với Dự án cập nhật EB

Thêm Django

Thêm trường Slug Thêm Bootstrap 5

Tài liệu tham khảo Django

Tham chiếu thẻ mẫu Tham chiếu bộ lọc Tham chiếu trường tra cứu Tham chiếu

Bài tập Django

Trình biên dịch Django Bài tập Django Câu đố Django Máy chủ Django Chứng chỉ Django

Trường sên Django


Sên là gì?

Bạn đã bao giờ thấy url trông như thế này chưa:

example.com.vn/django/learn-about-slug-field

Phần " tìm hiểu về trường sên " là một con sên.

Nó là một mô tả chỉ chứa các chữ cái, dấu gạch nối, số hoặc dấu gạch dưới.

Nó thường được sử dụng trong url để làm cho chúng dễ đọc hơn nhưng cũng để làm cho chúng thân thiện hơn với công cụ tìm kiếm.


Url không có sên

Nếu bạn đã theo dõi Dự án Django của chúng tôi được tạo trong hướng dẫn này, bạn sẽ có một dự án Django nhỏ trông như thế này:

Và nếu bạn nhấp vào thành viên đầu tiên, bạn sẽ chuyển đến trang này:

Kiểm tra thanh địa chỉ:

127.0.0.1:8000/members/details/1

Số "1" đề cập đến ID của bản ghi cụ thể đó trong cơ sở dữ liệu.

Có ý nghĩa đối với nhà phát triển, nhưng có lẽ không hợp lý với bất kỳ ai khác.


Url với sên

Sẽ có ý nghĩa hơn nếu url trông như thế này:

Kiểm tra thanh địa chỉ:

127.0.0.1:8000/members/details/emil-refsnes

Đó là một url thân thiện với người dùng hơn và Django có thể giúp bạn tạo những url như vậy trong dự án của mình.


Sửa đổi tệp models.py

Bắt đầu bằng cách thêm một trường mới vào cơ sở dữ liệu.

Mở tệp models.py và thêm trường có tên slug với kiểu dữ liệu SlugField :

my_tennis_club/members/models.py :

 from django.db import models

class Member(models.Model):
  firstname = models.CharField(max_length=255)
  lastname = models.CharField(max_length=255)
  phone = models.IntegerField(null=True)
  joined_date = models.DateField(null=True)
  slug = models.SlugField(default="", null=False)

  def __str__(self):
    return f"{self.firstname} {self.lastname}"

Đây là một sự thay đổi trong cấu trúc của Mô hình và do đó chúng tôi phải thực hiện di chuyển để thông báo cho Django rằng nó phải cập nhật cơ sở dữ liệu:

py manage.py makemigrations

Và lệnh di chuyển:

py manage.py migrate

Thay đổi quản trị viên

Bây giờ chúng tôi có một trường mới trong cơ sở dữ liệu, nhưng chúng tôi cũng muốn trường này được cập nhật tự động khi chúng tôi đặt họ hoặc tên của một thành viên.

Điều này có thể được thực hiện bằng tính năng Django tích hợp có tên là prepopulated_fields trong đó bạn chỉ định trường bạn muốn điền trước và một bộ dữ liệu có (các) trường bạn muốn điền vào.

Việc này được thực hiện trong tệp admin.py :

my_tennis_club/members/admin.py :

 from django.contrib import admin
from .models import Member

# Register your models here.

class MemberAdmin(admin.ModelAdmin):
  list_display = ("firstname", "lastname", "joined_date",)
  prepopulated_fields = {"slug": ("firstname", "lastname")}
  
admin.site.register(Member, MemberAdmin)

Vào giao diện Quản trị và mở bản ghi để chỉnh sửa:

Nhấp vào "LƯU" và trường "slug" sẽ được tự động điền tên và họ, đồng thời vì trường "sên" thuộc loại SlugField nên nó sẽ "slugify" giá trị, nghĩa là nó sẽ đặt dấu gạch nối giữa mỗi từ .

Lần tới khi bạn mở thành viên để chỉnh sửa, bạn sẽ thấy trường slug có giá trị:

Lưu ý: Vì trường mới trống theo mặc định nên bạn phải thực hiện thao tác lưu này cho từng thành viên.


Sửa đổi mẫu

Bây giờ chúng ta có thể thay thế trường ID bằng trường slug trong suốt dự án.

Bắt đầu với mẫu all_members.html , nơi chúng tôi có liên kết đến trang chi tiết:

my_tennis_club/members/templates/all_members.html :

 {% extends "master.html" %}

{% block title %}
  My Tennis Club - List of all members
{% endblock %}


{% block content %}
  <div class="mycard">
    <h1>Members</h1>
    <ul>
      {% for x in mymembers %}
        <li onclick="window.location = 'details/{{ x.slug }}'">{{ x.firstname }} {{ x.lastname }}</li>
      {% endfor %}
    </ul>
  </div>
{% endblock %}

Sửa đổi URL

Chúng tôi cũng phải thực hiện một số thay đổi trong tệp urls.py

Thay đổi từ <int:id> thành <slug:slug> :

my_tennis_club/members/urls.py :

 from django.urls import path
from . import views

urlpatterns = [
    path('', views.main, name='main'),
    path('members/', views.members, name='members'),
    path('members/details/<slug:slug>', views.details, name='details'),
    path('testing/', views.testing, name='testing'),
]

Sửa đổi chế độ xem

Cuối cùng, thay đổi chế độ xem details để xử lý yêu cầu đến dưới dạng slug thay vì ID:

my_tennis_club/members/views.py :

 from django.http import HttpResponse
from django.template import loader
from .models import Member

def members(request):
  mymembers = Member.objects.all().values()
  template = loader.get_template('all_members.html')
  context = {
    'mymembers': mymembers,
  }
  return HttpResponse(template.render(context, request))
  
def details(request, slug):
  mymember = Member.objects.get(slug=slug)
  template = loader.get_template('details.html')
  context = {
    'mymember': mymember,
  }
  return HttpResponse(template.render(context, request))
  
def main(request):
  template = loader.get_template('main.html')
  return HttpResponse(template.render())

def testing(request):
  template = loader.get_template('template.html')
  context = {
    'fruits': ['Apple', 'Banana', 'Cherry'],   
  }
  return HttpResponse(template.render(context, request))  

Bây giờ, liên kết đến chi tiết hoạt động với url được phân loại mới:

Nếu bạn đã làm theo tất cả các bước trên máy tính của mình, bạn có thể xem kết quả trong trình duyệt của riêng mình: 127.0.0.1:8000/members/ .

Nếu máy chủ ngừng hoạt động, bạn phải khởi động lại bằng lệnh runserver :

py manage.py runserver

×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .