Проблема использования арабского языка в ссылках 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 или ссылках, необходимо учитывать несколько моментов, чтобы обеспечить надлежащую функциональность и совместимость.
- Кодировка 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'
Локализационное промежуточное ПО: В настройках промежуточного ПО вашего проекта следует включить
LocaleMiddleware
Django. Это промежуточное ПО обрабатывает языковые предпочтения, включая арабский язык, на основе настроек браузера пользователя.Конфигурация языка и локали: В настройках вашего проекта Django убедитесь, что заданы соответствующие параметры языка и локали. Это включает в себя указание
LANGUAGE_CODE
иLOCALE_PATHS
. Для арабского языка,LANGUAGE_CODE
будет 'ar' для современного стандартного арабского языка или 'ar-xx' для конкретного варианта арабского языка (например, 'ar-sa' для арабского языка Саудовской Аравии).Шаблоны и представления 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 поддерживает работу с арабским языком, все равно очень важно обеспечить правильную настройку вашего веб-сервера, базы данных и параметров клиентской стороны для корректной работы с Юникодом и направлением текста.