• 1401/06/02

استفاده از slug فارسی در url :

سلام من توی لوکال هاست جنس slug رو از str قرار دادم و url فارسی بدرستی کار میکرد

 

path('<str:slug>', views.ProductDetailView.as_view(), name='product-detail')

 

allow_unicode هم هم توی فیلد دیتابیس True قرار دادم هم توی متد slugify  اما همین که سایت رو به سرور انتقال دادم دیگه محصول رو پیدا نمی کنه و 404 بر می گردونه
 

ممنو میشم راهنمایی کنید

  • 1401/06/02
  • ساعت 16:12

با سلام.

 

از چه DB در سرور استفاده می کنید؟


  • 1401/06/02
  • ساعت 16:18

دقیقا من هم به این فکر کردم که مشکل از دیتابیس باشه
دیتا بیس لوکال هاست sqlite هستش 
دیتا بیس هاست mySql هست
encoding جدول ها هم روی utf8 گذاشتم


  • 1401/06/02
  • ساعت 18:13

برای فیلد slug هم allow_unicode قرار دادید؟


  • 1401/06/02
  • ساعت 19:53

بله برای اسلاگ هم قرار دادم

slug = md.SlugField(null=False, blank=True, max_length=200, unique=True, allow_unicode=True, verbose_name='عنوان در url')

 

def get_absolute_url(self):
    return reverse('product-detail', args=[self.slug])

def save(self, *args, **kwargs):
    self.slug = slugify(self.title, allow_unicode=True)
    super().save(*args, **kwargs)

  • 1401/06/02
  • ساعت 20:33

بنده الان متوجه شدم دیتابیس سایتم MariaDB هست ممکنه مشکل از این باشه؟
بعد فرق این دیتابیس با MySql چیه؟


  • 1401/06/02
  • ساعت 20:47

MariaDB یک fork از MySQL است.

 

این پست را ببینید. یکی از دوستان با encoding ها مشکل داشت که با تغییر driver مربوط به MySQL مشکل حل شد.

شما نیز این روش را تست کنید.


  • 1401/06/02
  • ساعت 21:20

پکیج mysqlclient به یه سری dependency های زبان C نیاز داشت که روی هاست نبودن و نمی شد استفاده کنم
در پکیج mysql connector python هم دقیقا به مشکل همین پستی که گفتید بر خوردم و از pymysql استفاده کردم

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


  • 1401/06/02
  • ساعت 22:49

خواهش می کنم. حالا که از pymysql استفاده کردید، در init واقع در root اصلی پروژه، این کدها را قرار دهید و تست کنید:

 

import pymysql

pymysql.install_as_MySQLdb()

امید که جواب دهد.


  • 1401/06/02
  • ساعت 23:32

اینا رو هم قرار دادم 
در واقع اینا رو اگه قرار ندی از پکیج نمی شه استفاده کرد

بازم ممنون که هستید و به سوالات پاسخ میدید❤


  • 1401/06/03
  • ساعت 09:48

سلام دوست من

برای استفاده از پکیج MySqlClient به پشتیبانی تیکت بزنین و بهشون بگین که قصد دارین چه پکیجی رو نصب کنین تا پکیجی که نیاز دارین رو نصب کنن

معمولا در ابتدا از این کار خودداری میکنن اما با توضیح اینکه قصد دارین از data connector استفاده کنین براتون انجام میدن

اگر باز هم کاراکتر های فارسی نمایش داده نشدن میتونین از داخل تنظیمات اصلی venv روش encoding رو روی utf-8 قرار بدین تا بدون مشکل تبدیل کنه


  • 1401/06/03
  • ساعت 14:08

سلام استاد 
ممنون از پاسختون❤


  • 1401/06/04
  • ساعت 21:02

سلامت باشین دوست من

موفق باشین :)


logo-enamadlogo-samandehi