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

امیرحسین بیگدلو April 2023

برای استفاده از 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),

 

ویدیوهای مشابه



ارسال نظر


محمد

9 ماه قبل پاسخ به نظر

جالب بود. مرسی.

ارسال نظر



hamzeh

11 ماه قبل پاسخ به نظر

بعدش که میخوای برای دسترسی به پست های قدیمی تر آرگومان بعدی رو به عنوان شماره صفحه بدی دچار اختلال میشه.
کسی پیشنهادی داره؟

ارسال نظر



sorena

2 سال قبل پاسخ به نظر

عالی بود

ارسال نظر



ejo

2 سال قبل پاسخ به نظر

دمتون گم ممنون

ارسال نظر



عماد

3 سال قبل پاسخ به نظر

عالی بود ، فقط من آموزش ریجکس شمارو دیدم
ولی اون P بزرگ اولش و اون hyphen قبل از w\ رو نفهمیدم
میشه بگید برا چی بودن اون دو تا ؟

ارسال نظر



aseman

3 سال قبل پاسخ به نظر

اموزش خوبی بود

ارسال نظر



محمد

3 سال قبل پاسخ به نظر

سلام
من می خوام slug های جنگو را بتونم مثل وردپرس دستی وارد کنم و کوتاه باشه حتی دسته بندی هم درج نکنم داخل آدرس پست،
بصورت slug:slug
مثال
site . ir / post

site . ir/ category
و...
ولی پیش‌فرض جنگو اجازه چنین کاری نمیده و فقط یک مورد را می تونم به این صورت وارد کنم، راه حلی براش هست؟

ارسال نظر



امیرحسین بیگدلو

3 سال قبل

سلام
نمیدونم :/

علی

3 سال قبل پاسخ به نظر

سلام آقای بیگدلو
این فقط روی لوکال کار میکنه و روی سرور کار نمیکنه
یکی گفت که فانکشن اخر فایل wsgi.py را در هسته جنگو در سی پنل روی utf-8 قرار بدید. این کار را هم کردم ولی باز نشد
مشکل از کجاست ؟ چیزی نیاز نیست که برای ریجکس ها نصب کنیم؟
لطفا خودتون امتحان کنید

ارسال نظر



امیرحسین بیگدلو

3 سال قبل

سلام
با پشتیانی سرور تماس بگیر. مشکلت رو حل میکنن

منصور

3 سال قبل پاسخ به نظر

من هم مثل آقای تقی زاده با این موضوع مشکل دارم.
روی کامپیوتر خودم درست کار می کنه، ولی وقتی روی هاست قرارش می دم با خطای ذیل روبرو میشه:
Internal Error

The server encountered an unexpected condition which prevented it from fulfilling the request.

ارسال نظر



امیرحسین بیگدلو

3 سال قبل

نمیدونم. باید خودم یه بار تست کنم ببینم چرا ارور میده


بهزاد تقی زاده

3 سال قبل

داش من مشکل رو پیدا کردم
مشکل از هاست بود... سروری که من خریده بودم کلا با حروف فارسی تو url مشکل داشت...
شاید واسه توهم همینجوری باشه

بهزاد تقی زاده

3 سال قبل پاسخ به نظر

اینکار رو کردم وقتی سایت رو هاست هست به ارور eternal error بر می خورم

ارسال نظر



mohamad

3 سال قبل پاسخ به نظر

خلی عالی بود ممنونم زیاد پیگیرش بودم

ارسال نظر



مونگارد