0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Sử Dụng Biểu Thức Chính Quy Trong Django: Tạo URL Tùy Chỉnh Và Xác Thực Dữ Liệu Người Dùng

Đăng vào 1 tháng trước

• 4 phút đọc

Chủ đề:

Django

Giới Thiệu về Biểu Thức Chính Quy (Regex) Trong Django

Biểu thức chính quy (regex) là một công cụ mạnh mẽ trong lập trình, đặc biệt là trong phát triển web với Django. Chúng giúp bạn tạo các URL tùy chỉnh và xác thực dữ liệu người dùng một cách linh hoạt và hiệu quả. Trong bài viết này, chúng ta sẽ cùng khám phá cách sử dụng regex để tối ưu hóa dự án Django của bạn.

Biểu Thức Chính Quy Là Gì?

Biểu thức chính quy là một mẫu văn bản được sử dụng để tìm kiếm, khớp và xử lý chuỗi. Trong Django, chúng cực kỳ hữu ích để:

  • Định tuyến URL tùy chỉnh: Để khớp với những định dạng cụ thể, chẳng hạn như năm hoặc tên người dùng trong URL.
  • Xác thực biểu mẫu: Để đảm bảo dữ liệu đầu vào như số điện thoại hoặc tên người dùng tuân thủ các tiêu chí nhất định.

Ví Dụ Về Biểu Thức Chính Quy

Biểu thức chính quy sau:

Copy
^[a-zA-Z]+$

khớp với các chuỗi chỉ bao gồm chữ cái. Phân tích từng thành phần:

  • ^: Bắt đầu chuỗi.
  • [a-zA-Z]: Bất kỳ chữ cái nào (kể cả chữ hoa và chữ thường).
  • +: Một hoặc nhiều ký tự.
  • $: Kết thúc chuỗi.

Thiết Lập Dự Án Django Của Bạn

  1. Tạo một ứng dụng Django mới, nếu bạn chưa có:
    Copy
    django-admin startproject regex_demo
    cd regex_demo
    python manage.py startapp regex_app
  2. Thêm regex_app vào danh sách INSTALLED_APPS trong file settings.py.

Ví Dụ 1: Tạo URL Tùy Chỉnh

Chúng ta sẽ tạo một mẫu URL để khớp với năm gồm bốn chữ số như sau: /articles/2024/.

urls.py: Xác Định Mẫu

python Copy
from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^articles/(?P<year>[0-9]{4})/$', views.articles_by_year, name='articles_by_year'),
]

Trong đoạn mã trên:

  • r'^articles/(?P<year>[0-9]{4})/$': Mẫu khớp bắt đầu bằng /articles/ tiếp theo là một số có bốn chữ số.
  • (?P<year>[0-9]{4}): Ghi lại năm vào một biến tên là year.

views.py: Xử Lý Yêu Cầu

python Copy
from django.http import HttpResponse

def articles_by_year(request, year):
    return HttpResponse(f"Bài viết từ năm {year}")

Truy cập /articles/2024/ trên trình duyệt và bạn sẽ thấy thông báo:

Copy
Bài viết từ năm 2024

Ví Dụ 2: Xác Thực Đầu Vào Biểu Mẫu

Giả sử chúng ta muốn đảm bảo rằng tên người dùng chỉ chứa chữ cái, số và dấu gạch dưới.

forms.py: Thêm Logic Xác Thực

python Copy
from django import forms
import re

class UsernameForm(forms.Form):
    username = forms.CharField(max_length=30)

    def clean_username(self):
        username = self.cleaned_data['username']
        if not re.match(r'^[a-zA-Z0-9_]+$', username):
            raise forms.ValidationError("Tên người dùng chỉ được chứa chữ cái, số và dấu gạch dưới.")
        return username

views.py: Hiển Thị Biểu Mẫu

python Copy
from django.shortcuts import render
from .forms import UsernameForm

 def signup(request):
    if request.method == 'POST':
        form = UsernameForm(request.POST)
        if form.is_valid():
            return HttpResponse("Đăng ký thành công!")
    else:
        form = UsernameForm()
    return render(request, 'signup.html', {'form': form})

signup.html: Biểu Mẫu HTML Đơn Giản

html Copy
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Đăng Ký</button>
</form>

Hãy thử nghiệm:

  • Nhập vào valid_user123 — thành công!
  • Nhập vào invalid$user! — bạn sẽ nhận được thông báo lỗi.

Lời Khuyên Cuối Cùng

  • Sử Dụng Công Cụ Trực Tuyến: Kiểm tra mẫu biểu thức chính quy của bạn trên các trang web như regex101.com.
  • Viết Regex Dễ Hiểu: Sử dụng re.VERBOSE để thêm chú thích cho regex, giúp nó trở nên rõ ràng hơn:
python Copy
pattern = re.compile(r"""
    ^            # Bắt đầu chuỗi
    [a-zA-Z0-9_] # Chữ cái, số hoặc dấu gạch dưới
    +            # Một hoặc nhiều ký tự
    $            # Kết thúc chuỗi
""", re.VERBOSE)

Tại Sao Nên Học Regex Trong Django?

Việc làm chủ regex không chỉ giúp bạn tạo ra các URL chính xác mà còn tăng cường khả năng xác thực dữ liệu đầu vào và xử lý văn bản một cách mạnh mẽ. Regex là công cụ thiết yếu cho bất kỳ nhà phát triển Django nào. Hãy thử nghiệm và sớm thôi, regex sẽ trở thành một phần không thể thiếu trong kỹ năng lập trình của bạn.

Hy vọng thông tin trong bài viết sẽ hữu ích cho quá trình học tập và phát triển dự án của các bạn.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào