Hi
if i use Arabic slug in localhost that works just fine, but on the server in production any page with Arabic slug well show 404 error, In the same time English slug works.
models.py
slug = models.SlugField(blank=True, editable=True, allow_unicode=True, null=False, unique=True )
urls.py
from django.urls import path, re_path
from blogs import views
app_name = "blogs"
...
re_path(r'^(?P<slug>[-a-zA-Z0-9 _ءاأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى٠١٢٣٤٥٦٧٨٩]+)/$', views.BlogDetailView.as_view(),
name='blog_detail'),
path('<str:slug>/', views.BlogDetailView.as_view(), name='blog_detail'),
views.py
class BlogDetailView(DetailView):
model = Blog
template_name = 'blogs/blogDetails.html'
def post(self, request, *args, **kwargs):
year = self.request.POST.get('year_choice', None)
instance = self.get_object()
if not year:
return redirect('blogs:blog_detail', slug=instance.slug)
return redirect('reports:blog_report', slug=instance.slug, year=year)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
instance = self.get_object()
year = self.kwargs.get('year')
reports = Report.objects.filter(blog=instance)
years = Year.objects.filter(name__gte=str(instance.since), report__in=reports)
context['years'] = years
context['year'] = year
return context
settings.py
ALLOW_UNICODE_SLUGS = True
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS' : {
'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'",
'charset' : 'utf8mb4',
}
}
}