آموزش urlهای فارسی در جنگو

May 2020

برای استفاده از url فارسی در جنگو باید در مدل‌هاتون مقدار آپشن allow_unicode در فیلد SlugField را True قرار دهید:

# my_app/models.py

from django.db import models


class Article(models.Model):
    title = models.CharField(max_length=20)
    slug = models.SlugField(max_length=20, allow_unicode=True)

با اینکار SlugField شما میتونه کاراکترهای فارسی رو قبول کنه. اما این مرحله اول بود.

در مرحله دوم باید urlهای خودتون رو تغییر بدین. جنگو به صورت پیشفرض از کاراکترهای یونیکد شده در urlها پشتیبانی نمیکنه. پس مجبورید از متد re_path استفاده کنید تا بتونید regex مخصوص خودتون رو داشته باشید:

# my_app/urls.py

form django.urls import re_path
from . import views


urlpatterns = [
    re_path(r'(?P<slug>[-\w]+)/', views.detail),
]

با استفاده از regex بالا میتونید کاراکترهای فارسی رو در url استفاده کنید.

مشکلی که روش بالا داره اینکه بخاطر استفاده از حروف فارسی، url از راست به چپ نوشته خواهد شد. برای حل این مشکل میتونید قبل از regex از یک کلمه یا حرف انگلیسی استفاده کنید:

re_path(r'detail/(?P<slug>[-\w]+)/', views.detail),

 

ارسال نظر

اگر قراره سوالی بپرسید که داخلش کد هست، بهتره از کدتون عکس بگیرید و به ایمیلی که پایین نوشتم بفرستید