如何在 Django 2.0 中使用波斯语蛞蝓解码 URL?
Posted
技术标签:
【中文标题】如何在 Django 2.0 中使用波斯语蛞蝓解码 URL?【英文标题】:How to decode URL with Persian slug in Django 2.0? 【发布时间】:2019-04-26 15:30:14 【问题描述】:我有一个使用波斯蛞蝓的存档视图,例如:
چینیها-خورشید-مصنوعی-هم-ساختند
使用此网址模式:
urlpatterns = [
...
path('archive/<str:slug>/', views.ArchiveDetailView.as_view(),
...
]
models.py:
class Archive(models.Model):
...
slug = models.SlugField(_('Slug'), max_length=128, unique=True, allow_unicode=True)
...
views.py:
class ArchiveDetailView(DetailView):
model = Archive
def get_object(self, queryset=None):
slug = self.kwargs.get(self.slug_url_kwarg)
return get_object_or_404(self.model, slug=slug)
在本地使用 Django 内置 Web 服务器可以正常工作。但是当我在主机 (cPanel) 上部署站点时,返回 404 错误(仅适用于波斯蛞蝓)。
我想我找到了问题,但我不知道如何解决?
问题在于波斯语中的 slug、Web 服务器 (Apache) 或 Django 无法解码 URL。
【问题讨论】:
日志是怎么说的? 例行报告。 @PedroLobito 问题解决了吗? 【参考方案1】:使用波斯蛞蝓最好的方法是使用正则表达式,它更适合解码,它可能会解决你的问题。
form django.urls import re_path
from . import views
urlpatterns = [
re_path(r'(?P<slug>[-\w]+)/', views.detail),
]
或者,如果您想为 url 调度添加更多项目,您可以使用下面的示例。
re_path(r'detail/(?P<slug>[-\w]+)/', views.detail)
更多详情请点击以下链接: https://www.mongard.ir/one_part/73/django-persian-urls/
【讨论】:
以上是关于如何在 Django 2.0 中使用波斯语蛞蝓解码 URL?的主要内容,如果未能解决你的问题,请参考以下文章