django链接中使用阿拉伯语的问题

问题描述 投票:0回答:1

我正在用 Django 编写一个网站 我想将阿拉伯语放入链接中,但是当我用阿拉伯语创建链接并选择它时,它会将我带到未找到的页面 注意:这仅发生在托管服务器上,这意味着它不会发生在本地主机上

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 django-templates django-urls django-url-reverse
1个回答
0
投票

当使用 Django 处理 URL 或链接中的阿拉伯语言时,需要记住一些注意事项,以确保正确的功能和兼容性。

  1. URL编码:URL只能包含ASCII字符,非ASCII字符(如阿拉伯字母)需要进行编码。 Django 提供了
    urlquote
    函数来正确编码 URL 的非 ASCII 字符。这是一个例子:
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. 本地化中间件:应在项目的中间件设置中启用 Django 的

    LocaleMiddleware
    。该中间件根据用户的浏览器设置处理语言首选项,包括阿拉伯语。

  2. 语言和区域设置:在 Django 项目设置中,确保设置适当的语言和区域设置。这包括指定

    LANGUAGE_CODE
    LOCALE_PATHS
    。对于阿拉伯语,
    LANGUAGE_CODE
    将是“ar”(代表现代标准阿拉伯语)或“ar-xx”(代表特定阿拉伯语变体)(例如,“ar-sa”代表沙特阿拉伯阿拉伯语)。

  3. URL 模式和视图:在 Django

    urls.py
    文件中定义 URL 模式时,您可以包含将捕获阿拉伯文本作为 URL 中的变量的参数。例如:

from django.urls import path
from . import views

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

在您的视图函数

arabic_view
中,您可以访问捕获的阿拉伯文本作为参数。

需要注意的是,虽然 Django 支持阿拉伯语处理,但确保正确配置 Web 服务器、数据库和客户端设置以正确处理 Unicode 和文本方向性仍然至关重要。

© www.soinside.com 2019 - 2024. All rights reserved.