- vừa được xem lúc

Biểu thức chính quy trong Django: Chinh phục URL và xác thực dữ liệu

0 0 1

Người đăng: Gung Typical

Theo Viblo Asia

Biểu thức chính quy (regex) – nghe có vẻ phức tạp nhưng lại là công cụ đắc lực trong Django, giúp bạn tạo URL tùy chỉnh và xác thực dữ liệu người dùng một cách linh hoạt. Hãy cùng tìm hiểu cách regex đơn giản hóa việc phát triển web với Django.

Biểu thức chính quy là gì?

Biểu thức chính quy là các mẫu được sử dụng để khớp với văn bản. Trong Django, chúng cực kỳ hữu ích cho:

  • Định tuyến URL tùy chỉnh (ví dụ: khớp định dạng cụ thể như năm hoặc tên người dùng trong URL).
  • Xác thực biểu mẫu (ví dụ: đảm bảo số điện thoại hoặc tên người dùng đáp ứng các tiêu chí cụ thể).

Ví dụ, biểu thức chính quy này:

^[a-zA-Z]+$ 

... phù hợp với các chuỗi chỉ chứa chữ cái.

Tức là:

  • ^ có nghĩa là "bắt đầu chuỗi".
  • [a-zA-Z] có nghĩa là "bất kỳ chữ cái nào (viết hoa hoặc viết thường)."
  • + có nghĩa là "một hoặc nhiều".
  • $ có nghĩa là "kết thúc chuỗi".

Bây giờ, chúng ta hãy xem Django sử dụng phép thuật này như thế nào.

Thiết lập dự án Django của bạn

  1. Tạo ứng dụng Django nếu bạn chưa có:
 django-admin startproject regex_demo cd regex_demo python manage.py startapp regex_app
  1. Thêm regex_appvào INSTALLED_APPStrong settings.py

Ví dụ 1: Định tuyến URL tùy chỉnh

Hãy tạo một mẫu URL khớp với năm gồm bốn chữ số như /articles/2024/

urls.py: Xác định mẫu

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'),
]

Sau đây là những gì đang xảy ra:

  • r'^articles/(?P<year>[0-9]{4})/$': Các kết quả /articles/ khớp với số có bốn chữ số theo sau (ví dụ: 2024).
  • (?P<year>[0-9]{4}): Ghi lại năm vào một biến có tên là year.

views.py: Xử lý yêu cầu

from django.http import HttpResponse def articles_by_year(request, year): return HttpResponse(f"Articles from the year {year}")

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

Articles from the year 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 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

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("Username can only contain letters, numbers, and underscores.") return username

views.py: Hiển thị biểu mẫu

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("Signup successful!") else: form = UsernameForm() return render(request, 'signup.html', {'form': form})

signup.html: Biểu mẫu HTML đơn giản

<form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Sign Up</button>
</form>

Hãy thử nghiệm:

  • Nhập vào valid_user123 — nó hoạt động!
  • Nhập — invalid$user! bạn sẽ thấy 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 biểu thức chính quy có thể đọc được: Sử dụng re.VERBOSEđể thêm chú thích để rõ ràng hơn:
 pattern = re.compile(r""" ^ # Start of string [a-zA-Z0-9_] # Letters, numbers, or underscores + # One or more $ # End of string """, re.VERBOSE)

Tại sao nên học Regex trong Django?

Regex cung cấp cho bạn các mẫu URL chính xác, xác thực đầu vào chống đạn và khả năng xử lý văn bản mạnh mẽ. Đây là công cụ bắt buộc phải có đối với 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 bản chất thứ hai.

Hy vọng thông tin trong bài viết sẽ giúp ích nhiều cho các bạn trong quá trình học tập và làm việc.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Creating a Custom User Model in Django

Làm thế nào để thay thế username với email trong Django authentication. Cần chú ý rằng các làm này sẽ làm thay đổi rất nhiều đến schema của database vậy nên khuyến khích khi thực hiện một dự án mới.

0 0 33

- vừa được xem lúc

Câu chuyện kiểm soát truy cập trong Django.

Nếu bạn đang xây dựng một ứng dụng với Django, có thể bạn sẽ muốn kiểm soát quyền truy cập ứng với từng loại user. Những tính năng này sẽ phổ biến trên các trang web có quy mô lớn hơn một chút.

0 0 82

- vừa được xem lúc

Django: Handling CSV Data

Khi làm việc với các dự án Python hay Django thì phần xử lý CSV hầu như là không thể thiếu. Qua bài viết này, các bạn hãy cùng mình hiểu rõ hơn về CSV cũng như xử lý chúng ra sao nhé.

0 0 39

- vừa được xem lúc

Python Django - Xây dựng ứng dụng e-commerce (Part 1)

Giới thiệu Django - Khởi tạo project. Sơ qua về Django. . Django là một Framework lập trình web bậc cao được viết bằng ngôn ngữ lập trình Python.

0 0 879

- vừa được xem lúc

Deploy thủ công ứng dụng Django

Đối với một developer mà nói, mục đích cuối cùng của chúng ta khi phát triển một sản phẩm là có thể đưa sản phẩm ấy đến được với người dùng, và deploy là bước cuối cùng mà chúng ta cần thực hiện. Tron

0 0 274

- vừa được xem lúc

Dễ dàng có ngay ứng dụng e-commerce với Django (Part 2)

Xin chào tất cả mọi người. Tiếp nối bài viết trước về việc dùng Python Django để xây dựng 1 ứng dụng thương mại điện tử, sau đây mình xin phép được làm tiếp phần 2 để bổ sung thêm các chức năng, giúp

0 0 714