Проблема использования арабского языка в ссылках django

Я программирую сайт на Django. Я хочу поместить арабский язык в мою ссылку, но когда я делаю ссылку на арабском и когда я выбираю ее, она приводит меня на страницу page not found Примечание: Это происходит только на сервере хостинга, то есть не происходит на localhost

urls.py
from django.urls import path, re_path
from . import views

urlpatterns = [
    # pages
    path('',views.index,name='index'),
    path('الصفحة/',views.listArticle,name='listArticle'),
    path('TravelTips/',views.TravelTips,name='TravelTips'),
    # view article 
    path('الصفحة/<str:slug_url>/', views.view_article, name='Page_Article'),
    path('TravelTips/<str:slug_url>/',views.view_article,name='Page_Article'),
,]

Я ожидал, что проблема в slug, но оказалось, что Django в целом не воспринимает арабские буквы

При использовании Django для работы с арабским языком в URL или ссылках, необходимо учитывать несколько моментов, чтобы обеспечить надлежащую функциональность и совместимость.

  1. Кодировка URL: URL могут содержать только символы ASCII, а символы, не относящиеся к ASCII (например, арабские буквы), должны быть закодированы. Django предоставляет функцию urlquote для правильного кодирования не ASCII символов для URL. Вот пример:
from django.utils.http import urlquote

arabic_text = "مرحبا"
encoded_text = urlquote(arabic_text)
# Output: '%D9%85%D8%B1%D8%AD%D8%A8%D8%A7'
  1. Локализационное промежуточное ПО: В настройках промежуточного ПО вашего проекта следует включить LocaleMiddleware Django. Это промежуточное ПО обрабатывает языковые предпочтения, включая арабский язык, на основе настроек браузера пользователя.

  2. Конфигурация языка и локали: В настройках вашего проекта Django убедитесь, что заданы соответствующие параметры языка и локали. Это включает в себя указание LANGUAGE_CODE и LOCALE_PATHS. Для арабского языка, LANGUAGE_CODE будет 'ar' для современного стандартного арабского языка или 'ar-xx' для конкретного варианта арабского языка (например, 'ar-sa' для арабского языка Саудовской Аравии).

  3. Шаблоны и представления URL: При определении шаблонов URL в файле Django urls.py вы можете включить параметры, которые определяют арабский текст, в качестве переменных в URL. Например:

from django.urls import path
from . import views

urlpatterns = [
    path('arabic/<str:arabic_text>/', views.arabic_view, name='arabic-url'),
]

В вашей функции просмотра arabic_view вы можете получить доступ к захваченному арабскому тексту в качестве параметра.

Важно отметить, что, хотя Django поддерживает работу с арабским языком, все равно очень важно обеспечить правильную настройку вашего веб-сервера, базы данных и параметров клиентской стороны для корректной работы с Юникодом и направлением текста.

Вернуться на верх