راهنمای اسلاگ فارسی در جنگو [persian slug for django]
![راهنمای اسلاگ فارسی در جنگو [persian slug for django] راهنمای اسلاگ فارسی در جنگو [persian slug for django]](https://parswebserver.com/wp-content/uploads/2023/08/Slug-django-50x50.jpg)
داشتن یک url تمیز، واضح و کوتاه به بازدیدکنندگان وب سایت و موتورهای جستجو کمک می کند تا صفحات وب سایت شما بهتر درک شوند.
برای رعایت موارد سئوی وب سایت، داشتن یک اسلاگ خوب امری ضروری می باشد و تاثیر بسیار بالایی روی نمایش صفحات وب سایت در نتایج جستجوی گوگل دارد.
در این پست آموزش اسلاگ فارسی در جنگو را مرور می کنیم.
Slug فارسی در جنگو
بعد از اینکه پروژه جنگو خود را روی هاست های پارس وب سرور راه اندازی کردید (راهنمای راه اندازی پروژه جنگو روی هاست) نیاز به تغییراتی هست تا بتوانیم از url فارسی در جنگو استفاده کنیم.
برای مشاهده و تهیه هاست های پایتون می توانید به صفحه هاست پایتون پارس وب سرور مراجعه کنید و جزئیات پلن های مختلف را بررسی و پلن مورد نظر خود را انتخاب و خریداری کنید و پروژه جنگوی خود را راه اندازی کنید.
راهنمای قدم به قدم اضافه کردن اسلاگ فارسی به جنگو
اولین اقدام این هست که به فولدر اپ مورد نظر خود در فولدر پروژه برویم (blog در این پروژه) و در فایل models.py ، اسلاگ را تعریف کنیم :
from django.db import models … class Post(models.Model): title = models.CharField(max_length=200, unique=True,db_collation='utf8_persian_ci') slug = models.SlugField(max_length=200, unique=True,allow_unicode=True,db_collation='utf8_persian_ci')
در مدلPOST خود، یک متغیر به نام slug تعریف می کنیم که نوع آن رو SlugField می دهیم (جزئیات بیشر در مورد SlugField را می توانید در مستندات جنگو مشاهده کنید) .
می توانیم در ادامه پارامتر تعداد حداکثر کاراکتر مجاز رو تعریف کنیم (max_length=200).
unique=True تعیین می کند که حتما اسلاگ ما منحصر به فرد باشد و اگر در دیتابیس ما اسلاگی از قبل با مقدار وارد شده وجود داشته باشد، پیام خطایی مبنی بر وجود اسلاگ و لزوم وارد کردن اسلاگ جدید نمایش داده می شود.
اسلاگ یونیک و منحصر به فرد
البته می توان کدهایی را به اپ اضافه کرد که در صورت وجود اسلاگ در دیتابیس، عددی به انتهای اسلاگ اضافه شود و یا یک متن تصادفی به انتهای اسلاگ اضافه شودتا یک اسلاگ منحصر به فرد و متفاوت ایجاد شود.
برای پشتیبانی اسلاگ جنگو در زبان فارسی، حتما باید پارامتر allow_unicode برابر true قرار داده شود. (allow_unicode=True)
با این مقدار، استفاده از حروف فارسی در اسلاگ جنگو امکان پذیر خواهد شد و می توانیم علاوه بر حروف انگلیسی و اعداد، از حروف فارسی هم استفاده کنیم.
کولیشن فارسی در دیتابیس
با وارد کردن db_collation=utf8_persian_ci در زمان ساخت دیتابیس، پارامتر کولیشن ستون اسلاگ در جدول به utf8_persian_ci تغییر می کند و اسلاگ ها به درستی و با حروف فارسی در دیتابیس ذخیره خواهند شد.
اگر کولیشن روی مقدار دیگر که عموما به صورت پیش فرض بر روی latin1_swedish_ci باشد، حروف اسلاگ به صورت علامت سوال (؟) ذخیره می شود.
موردی که باید به خاطر داشته باشید این است که همیشه قبل از مایگریشن و مایگریت، در وضعیتی که پروژه در حالت پایدار و مطلوب و بدون ارور هست بک آپ تهیه شود تا در صورتی که در ادامه بعد از آپدیت، تغییرات ناخواسته ای در دیتابیس ایجاد شد و یا پروژه با مشکل مواجه شد ، بازگردانی به آخرین وضعیت پایدار امکان پذیر باشد.
در قدم بعدی، در فایل urls.py اپ مورد نظر خود، re_path را ایمپورت می کنیم
from django.urls import include, path, re_path from . import views
در انتهای همین فایل در قسمت urlpatterns ، برای اسلاگ های فارسی به جای path از re_path استفاده می کنیم
urlpatterns = [
…
re_path(r'(?P < slug > [^/]+)/?$’, views.post_detail, name=”post_detail”),
…
]
و در پایان، در فایل views.py کدهای خود به این صورت ویرایش می کنیم :
from django.shortcuts import get_object_or_404, render from django.utils.encoding import uri_to_iri … from .models import Post def post_detail(request, slug): template_name = "post_detail.html" post = get_object_or_404(Post, slug=uri_to_iri(slug))
post_detail.html نام فایل قالب ما هست که برای نمایش اطلاعات پست مورد استفاده قرار می گیرد.
برای اینکه در زمان وارد کردن عنوان پست، اسلاگ به صورت خودکار ساخته و در فیلد مربوط به آن وارد شود از کد زیر در فایل admin.py استفاده می کنیم (در اینجا بیشتر توضیح داده شده است):
from django.contrib import admin from .models import Comment, Post … class PostAdmin(admin.ModelAdmin): list_display = ("title", "slug", "status", "created_on") prepopulated_fields = {"slug": ("title",)} … admin.site.register(Post, PostAdmin)
بعد از انجام تغییرات در ترمینال بعد از اینکه سورس اپلیکشن را در محیط ترمینال وارد کردیم
دستورات زیر را وارد می کنیم :
python manage.py makemigrations python manage.py migrate
وارد کردن اسلاگ در بخش مدیریت جنگو
وارد مدیریت جنگو می شویم و اولین پست خود را وارد می کنیم. در زمان تایپ عنوان پست، اسلاگ به صورت خودکار از عنوان تایپ شده ساخته می شود.
به طور مثال بعد از وارد کردن تایتل با متن “هاست های پارس وب سرور” لینک پست منتشر شده به صورت
https://djangokar.com/%D9%87%D8%A7%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%D8%B1%D8%B3-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%D8%B1 ساخته می شود و با کلیک بر روی آن، صفحه مربوط به این پست باز خواهد شد .
توجه داشته باشید که این راهنما به طور کلی برای استفاده از اسلاگ فارسی در جنگو نگارش شده است، و برای استفاده در پروژه خود ،احتمالا نیاز به انجام تغییراتی در پروژه خواهد داشت.
ارور 404 بعد از فارسی کردن اسلاگ جنگو
این خطا 3 علت می تواند داشته باشد:
1- ریجکس re_path در فایل urls.py به اشتباه وارد شده باشد که باید اصلاح شود و مقدار صحیح وارد گردد
re_path(r'(?P<slug>[^/]+)/?$’, views.post_detail, name=”post_detail”),
2- ممکن است فانکشن re_path را در فایل urls.py اپ خود ایمپورت نکرده باشید (در مورد re_path بیشتر بدانید)
from django.urls import include, path, re_path
3- عدم استفاده از تابع uri_to_iri در فایل views.py اپ، که این مورد هم باعث خطای 404 در صفحات پست ما خواهد شد.
from django.utils.encoding import uri_to_iri
…
post = get_object_or_404(Post, slug=uri_to_iri(slug))
خطای TemplateDoesNotExist بعد از فارسی کردن اسلاگ جنگو
این خطا زمانی اتفاق می افتد که همه موارد به درستی انجام شده باشد اما برای رندر صفحه، فایل تمپلت وجود نداشته باشد .
همینطور ممکن است فایل قالب، یا در جای اشتباهی از اپ قرار داده شده باشد.
نام فایل تمپلت در خطا نمایش داده می شود و در صورتی که خود اپ دارای پوشه templates باشد این فایل باید در این فولدر ایجاد شود.
در غیر اینصورت باید در فولدر templates اپ اصلی (main app) پروژه جنگو ما آپلود شود تا این خطا رفع گردد.
با رعایت موارد بالا مشکل اسلاگ فارسی در جنگو حل می شود.
اگر مورد خاصی بود در قسمت تیکت ها با همکاران پشتیبانی ما ارتباط بگیرید (ارسال تیکت پشتیبانی)

آموزش غیرفعال کردن دستی افزونه های وردپرس
![خطای دسترسی به دیتابیس در لاراول [Access denied for user] خطای دسترسی به دیتابیس در لاراول [Access denied for user]](https://parswebserver.com/wp-content/uploads/2023/09/laravel_db_errore_pws-415x235.jpg)
خطای دسترسی به دیتابیس در لاراول [Access denied for user]
دیدگاه های این نوشته

آموزش فعالسازی SSL در هاست

ساخت دیتابیس مونگو دی بی و اتصال به studio 3t

فعال کردن extension های php در cPanel

جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس

مشاهده لاگ های سایت در Raw Access سی پنل

معرفی سرویس Webalizer در سی پنل

معرفی سرویس آمار سی پنل Awstats

معرفی سرویس Virus Scanner در سی پنل

معرفی قابیلت Track DNS در سرویس های سی پنل

معرفی بخش BoxTrapper در سی پنل

قابلیت Greylisting در سی پنل

آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل

ایجاد رکوردهای DNS در ZoneEditor سی پنل

بررسی Bandwidth در سرویس سی پنل

کد EPP چیست

جلوگیری از دریافت ایمیل های خاص در سی پنل

آموزش ایجاد ساب دامنه در هاست سی پنل

آموزش مدیریت فضای ایمیل سی پنل

آموزش رفع ارور 502 Bad gateway

آموزش غیرفعال کردن دستی افزونه های وردپرس
![خطای دسترسی به دیتابیس در لاراول [Access denied for user] خطای دسترسی به دیتابیس در لاراول [Access denied for user]](https://parswebserver.com/wp-content/uploads/2023/09/laravel_db_errore_pws-415x235.jpg)
خطای دسترسی به دیتابیس در لاراول [Access denied for user]

راهنمای بررسی و رفع کندی وب سایت
![راهنمای اسلاگ فارسی در جنگو [persian slug for django] راهنمای اسلاگ فارسی در جنگو [persian slug for django]](https://parswebserver.com/wp-content/uploads/2023/08/Slug-django-415x235.jpg)
راهنمای اسلاگ فارسی در جنگو [persian slug for django]

آموزش اضافه کردن امضای دیجیتال به webmail

راهنمای رفع خطای MODULE_NOT_FOUND در Nodejs

چرا باید هاست اختصاصی خریداری کنیم؟

نحوه عیب یابی وردپرس

آموزش انتقال ایمیل های دایرکت ادمین به سی پنل

سلام
لطفا پروژه که کار شده برای دانلود بزارید چک کنم