راهنمای اسلاگ فارسی در جنگو [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.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) پروژه جنگو ما آپلود شود تا این خطا رفع گردد.
با رعایت موارد بالا مشکل اسلاگ فارسی در جنگو حل میشود.
اگر مورد خاصی بود در قسمت تیکت ها با همکاران پشتیبانی ما ارتباط بگیرید (ارسال تیکت پشتیبانی)
![محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024 محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024](https://parswebserver.com/wp-content/uploads/2024/06/nodejs-frameworks-415x235.jpg)
محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024
![پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel](https://parswebserver.com/wp-content/uploads/2024/06/python_pws-415x235.jpg)
پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel
دیدگاه های این نوشته
![آموزش فعالسازی SSL در هاست آموزش فعالسازی SSL در هاست](https://parswebserver.com/wp-content/uploads/2020/02/ip4-2.jpg)
آموزش فعالسازی SSL در هاست
![ساخت دیتابیس مونگو دی بی و اتصال به studio 3t ساخت دیتابیس مونگو دی بی و اتصال به studio 3t](https://parswebserver.com/wp-content/uploads/2020/09/MongoDB-3.png)
ساخت دیتابیس مونگو دی بی و اتصال به studio 3t
![فعال کردن extension های php در cPanel فعال کردن extension های php در cPanel](https://parswebserver.com/wp-content/uploads/2023/01/php-415x235.jpg)
فعال کردن extension های php در cPanel
![جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس](https://parswebserver.com/wp-content/uploads/2022/10/wp-02-415x235.jpg)
جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس
![مشاهده لاگ های سایت در Raw Access سی پنل مشاهده لاگ های سایت در Raw Access سی پنل](https://parswebserver.com/wp-content/uploads/2022/09/raw-06-415x235.jpg)
مشاهده لاگ های سایت در Raw Access سی پنل
![معرفی سرویس Webalizer در سی پنل معرفی سرویس Webalizer در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/Webalizer-02-376x235.jpg)
معرفی سرویس Webalizer در سی پنل
![معرفی سرویس آمار سی پنل Awstats معرفی سرویس آمار سی پنل Awstats](https://parswebserver.com/wp-content/uploads/2022/08/Awstats-01-415x235.jpg)
معرفی سرویس آمار سی پنل Awstats
![معرفی سرویس Virus Scanner در سی پنل معرفی سرویس Virus Scanner در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/scan-02-293x235.jpg)
معرفی سرویس Virus Scanner در سی پنل
![معرفی قابلیت Track DNS در سرویسهای سی پنل معرفی قابلیت Track DNS در سرویسهای سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/dns-05-415x235.jpg)
معرفی قابلیت Track DNS در سرویسهای سی پنل
![معرفی بخش BoxTrapper در سی پنل معرفی بخش BoxTrapper در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/bt-01-415x235.jpg)
معرفی بخش BoxTrapper در سی پنل
![قابلیت Greylisting در سی پنل قابلیت Greylisting در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/Greylisting-01-415x235.jpg)
قابلیت Greylisting در سی پنل
![آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/ip-1-415x235.jpg)
آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل
![ایجاد رکوردهای DNS در ZoneEditor سی پنل ایجاد رکوردهای DNS در ZoneEditor سی پنل](https://parswebserver.com/wp-content/uploads/2022/07/dns-415x235.jpg)
ایجاد رکوردهای DNS در ZoneEditor سی پنل
![بررسی Bandwidth در سرویس سی پنل بررسی Bandwidth در سرویس سی پنل](https://parswebserver.com/wp-content/uploads/2022/07/bw-415x235.jpg)
بررسی Bandwidth در سرویس سی پنل
![کد EPP چیست کد EPP چیست](https://parswebserver.com/wp-content/uploads/2022/06/EPP-415x235.jpg)
کد EPP چیست
![جلوگیری از دریافت ایمیل های خاص در سی پنل جلوگیری از دریافت ایمیل های خاص در سی پنل](https://parswebserver.com/wp-content/uploads/2022/06/email-415x235.jpg)
جلوگیری از دریافت ایمیل های خاص در سی پنل
![آموزش ایجاد ساب دامنه در هاست سی پنل آموزش ایجاد ساب دامنه در هاست سی پنل](https://parswebserver.com/wp-content/uploads/2022/06/sub-01-415x235.jpg)
آموزش ایجاد ساب دامنه در هاست سی پنل
![آموزش مدیریت فضای ایمیل سی پنل آموزش مدیریت فضای ایمیل سی پنل](https://parswebserver.com/wp-content/uploads/2022/06/email-logo-415x235.jpg)
آموزش مدیریت فضای ایمیل سی پنل
![آموزش رفع ارور 502 Bad gateway آموزش رفع ارور 502 Bad gateway](https://parswebserver.com/wp-content/uploads/2021/11/502-415x235.jpg)
آموزش رفع ارور 502 Bad gateway
![محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024 محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024](https://parswebserver.com/wp-content/uploads/2024/06/nodejs-frameworks-415x235.jpg)
محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024
![پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel](https://parswebserver.com/wp-content/uploads/2024/06/python_pws-415x235.jpg)
پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel
![هاست نودجیاس برای چه پروژههایی مناسب است؟ هاست نودجیاس برای چه پروژههایی مناسب است؟](https://parswebserver.com/wp-content/uploads/2024/06/pws_nodejs_projects-415x235.jpg)
هاست نودجیاس برای چه پروژههایی مناسب است؟
![راهنمای حذف لینکهای stats.wp.com در وردپرس راهنمای حذف لینکهای stats.wp.com در وردپرس](https://parswebserver.com/wp-content/uploads/2024/02/website-loading-415x235.png)
راهنمای حذف لینکهای stats.wp.com در وردپرس
![چرا وب سایت وردپرسی کند است؟ چرا وب سایت وردپرسی کند است؟](https://parswebserver.com/wp-content/uploads/2024/04/migrating-wordpress-415x235.jpg)
چرا وب سایت وردپرسی کند است؟
![تفاوت هاست وردپرس با هاست معمولی تفاوت هاست وردپرس با هاست معمولی](https://parswebserver.com/wp-content/uploads/2024/04/Use-Case@2x-2-1-415x235.png)
تفاوت هاست وردپرس با هاست معمولی
![نقش امنیت در سایتهای وردپرسی نقش امنیت در سایتهای وردپرسی](https://parswebserver.com/wp-content/uploads/2024/04/امنیت-وردپرس-415x235.jpg)
نقش امنیت در سایتهای وردپرسی
![تبریک سال نو با هدیه نوروزی پارس وب سرور تبریک سال نو با هدیه نوروزی پارس وب سرور](https://parswebserver.com/wp-content/uploads/2024/03/spring1403-415x235.jpg)
تبریک سال نو با هدیه نوروزی پارس وب سرور
![تفاوت و برتری سرورهای G10 در مقایسه با سرورهای G9 تفاوت و برتری سرورهای G10 در مقایسه با سرورهای G9](https://parswebserver.com/wp-content/uploads/2024/03/server-g10-415x235.png)
تفاوت و برتری سرورهای G10 در مقایسه با سرورهای G9
![7 راهکار برای جلوگیری از اسپمشدن ایمیلها 7 راهکار برای جلوگیری از اسپمشدن ایمیلها](https://parswebserver.com/wp-content/uploads/2024/02/email-spam-pws-415x235.png)
سلام
لطفا پروژه که کار شده برای دانلود بزارید چک کنم
”post_detail”
این بخش به نظر میاد کوتیشن خوب گذاشته نشده و وقتی که کپی پیست خواستم کنم ارور داشت
“post_detail”
و مورد دیگه هم اینکه باکس مربوط به کدها براشون نیومده
سلام جناب شمسی پورعزیز .
از دقت و یادآوری شما تشکر می کنیم، کد مورد نظر اصلاح شد و در باکس مربوط به کدها قرار گرفت.
اگر تجربه و یا نکته ای دیگری هست که بتونیم با سایر کاربران، به اشتراک بزاریم،خوشحال میشیم که با ما مطرح بفرمایید