درک عبارات منظم جنگو – انجمن DEV

Summarize this content to 400 words in Persian Lang
عبارات منظم (regex) می تواند ترسناک به نظر برسد، اما در جنگو، آنها ابزار قدرتمندی برای ایجاد الگوهای URL سفارشی و اعتبارسنجی ورودی کاربر هستند. بیایید regex را ساده کنیم و نشان دهیم که چگونه در جریان کار جنگو شما قرار می گیرد
عبارات با قاعده چیست؟
عبارات منظم الگوهایی هستند که برای مطابقت با متن استفاده می شوند. در جنگو، آنها برای موارد زیر بسیار مفید هستند:
مسیریابی URL سفارشی (به عنوان مثال، مطابقت با یک قالب خاص مانند یک سال یا نام کاربری در URL ها).
اعتبار سنجی فرم (به عنوان مثال، اطمینان از اینکه شماره تلفن یا نام کاربری با معیارهای خاصی مطابقت دارد).
به عنوان مثال، این regex:
^[a-zA-Z]+$
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
… رشته هایی را که فقط حاوی حروف هستند مطابقت می دهد.
^ به معنی “شروع رشته” است.
[a-zA-Z] به معنای “هر حرفی (بزرگ یا کوچک) است.”+ به معنای “یک یا چند” است.
$ به معنای “انتهای رشته” است.
حال، بیایید ببینیم جنگو چگونه از این جادو استفاده می کند.
راه اندازی پروژه جنگو شما
اگر قبلاً برنامه جنگو ندارید، یک برنامه جنگو ایجاد کنید:
django-admin startproject regex_demo
cd regex_demo
python manage.py startapp regex_app
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اضافه کنید regex_app به INSTALLED_APPS در settings.py.
مثال 1: مسیریابی URL سفارشی
بیایید یک الگوی URL ایجاد کنیم که با سال چهار رقمی مطابقت داشته باشد /articles/2024/.
urls.py: الگو را تعریف کنید
from django.urls import re_path
from . import views
urlpatterns = [
re_path(r’^articles/(?P[0-9]{4})/$’, views.articles_by_year, name=’articles_by_year’),
]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این چیزی است که اتفاق می افتد:
r’^articles/(?P[0-9]{4})/$’: مسابقات /articles/ به دنبال آن یک عدد چهار رقمی (به عنوان مثال، 2024).
(?P[0-9]{4}): سال را در یک متغیر به نام ثبت می کند year.
views.py: رسیدگی به درخواست
from django.http import HttpResponse
def articles_by_year(request, year):
return HttpResponse(f”Articles from the year {year}”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بازدید کنید /articles/2024/ در مرورگر خود، و خواهید دید:
Articles from the year 2024
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مثال 2: اعتبار سنجی ورودی های فرم
فرض کنید میخواهیم مطمئن شویم که نام کاربری فقط حروف، اعداد و زیرخط داشته باشد.
forms.py: منطق اعتبار سنجی را اضافه کنید
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: فرم را رندر کنید
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: فرم ساده HTML
method=”post”>
{% csrf_token %}
{{ form.as_p }}
type=”submit”>Sign Up
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تستش کن:
وارد کنید valid_user123- کار می کند!
وارد کنید invalid$user!- یک پیام خطا خواهید دید.
نکات نهایی
از ابزارهای آنلاین استفاده کنید: الگوهای regex خود را در سایت هایی مانند regex101.com تست کنید.
خواندن Regex را بنویسید: استفاده کنید re.VERBOSE برای اضافه کردن نظرات برای وضوح:
pattern = re.compile(r”””
^ # Start of string
[a-zA-Z0-9_] # Letters, numbers, or underscores
+ # One or more
$ # End of string
“””, re.VERBOSE)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چرا Regex را در جنگو یاد بگیریم؟
Regex الگوهای URL دقیق، اعتبار سنجی ورودی ضد گلوله و قابلیت های قدرتمند پردازش متن را در اختیار شما قرار می دهد. این یک ابزار ضروری برای هر توسعه دهنده جنگو است. شیرجه بزنید، آزمایش کنید و به زودی، regex مانند طبیعت دوم خواهد بود.
سوالاتی دارید؟ در نظرات زیر به من اطلاع دهید!
عبارات منظم (regex) می تواند ترسناک به نظر برسد، اما در جنگو، آنها ابزار قدرتمندی برای ایجاد الگوهای URL سفارشی و اعتبارسنجی ورودی کاربر هستند. بیایید regex را ساده کنیم و نشان دهیم که چگونه در جریان کار جنگو شما قرار می گیرد
عبارات با قاعده چیست؟
عبارات منظم الگوهایی هستند که برای مطابقت با متن استفاده می شوند. در جنگو، آنها برای موارد زیر بسیار مفید هستند:
- مسیریابی URL سفارشی (به عنوان مثال، مطابقت با یک قالب خاص مانند یک سال یا نام کاربری در URL ها).
- اعتبار سنجی فرم (به عنوان مثال، اطمینان از اینکه شماره تلفن یا نام کاربری با معیارهای خاصی مطابقت دارد).
به عنوان مثال، این regex:
^[a-zA-Z]+$
… رشته هایی را که فقط حاوی حروف هستند مطابقت می دهد.
-
^
به معنی “شروع رشته” است. -
[a-zA-Z]
به معنای “هر حرفی (بزرگ یا کوچک) است.” -
+
به معنای “یک یا چند” است. -
$
به معنای “انتهای رشته” است.
حال، بیایید ببینیم جنگو چگونه از این جادو استفاده می کند.
راه اندازی پروژه جنگو شما
- اگر قبلاً برنامه جنگو ندارید، یک برنامه جنگو ایجاد کنید:
django-admin startproject regex_demo
cd regex_demo
python manage.py startapp regex_app
- اضافه کنید
regex_app
بهINSTALLED_APPS
درsettings.py
.
مثال 1: مسیریابی URL سفارشی
بیایید یک الگوی URL ایجاد کنیم که با سال چهار رقمی مطابقت داشته باشد /articles/2024/
.
urls.py
: الگو را تعریف کنید
from django.urls import re_path
from . import views
urlpatterns = [
re_path(r'^articles/(?P[0-9]{4})/$ ', views.articles_by_year, name='articles_by_year'),
]
این چیزی است که اتفاق می افتد:
-
r'^articles/(?P
: مسابقات[0-9]{4})/$' /articles/
به دنبال آن یک عدد چهار رقمی (به عنوان مثال،2024
). -
(?P
: سال را در یک متغیر به نام ثبت می کند[0-9]{4}) year
.
views.py
: رسیدگی به درخواست
from django.http import HttpResponse
def articles_by_year(request, year):
return HttpResponse(f"Articles from the year {year}")
بازدید کنید /articles/2024/
در مرورگر خود، و خواهید دید:
Articles from the year 2024
مثال 2: اعتبار سنجی ورودی های فرم
فرض کنید میخواهیم مطمئن شویم که نام کاربری فقط حروف، اعداد و زیرخط داشته باشد.
forms.py
: منطق اعتبار سنجی را اضافه کنید
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
: فرم را رندر کنید
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
: فرم ساده HTML
تستش کن:
- وارد کنید
valid_user123
– کار می کند! - وارد کنید
invalid$user!
– یک پیام خطا خواهید دید.
نکات نهایی
- از ابزارهای آنلاین استفاده کنید: الگوهای regex خود را در سایت هایی مانند regex101.com تست کنید.
-
خواندن Regex را بنویسید: استفاده کنید
re.VERBOSE
برای اضافه کردن نظرات برای وضوح:
pattern = re.compile(r"""
^ # Start of string
[a-zA-Z0-9_] # Letters, numbers, or underscores
+ # One or more
$ # End of string
""", re.VERBOSE)
چرا Regex را در جنگو یاد بگیریم؟
Regex الگوهای URL دقیق، اعتبار سنجی ورودی ضد گلوله و قابلیت های قدرتمند پردازش متن را در اختیار شما قرار می دهد. این یک ابزار ضروری برای هر توسعه دهنده جنگو است. شیرجه بزنید، آزمایش کنید و به زودی، regex مانند طبیعت دوم خواهد بود.
سوالاتی دارید؟ در نظرات زیر به من اطلاع دهید!