在 Django 中,国际化后如何有条件地删除语言前缀?媒体文件 src 问题

In Django, how to remove language prefix conditionnally after internationalization ? Media file src problem

提问人:Antz 提问时间:11/7/2023 更新时间:11/7/2023 访问量:20

问:

在 django 项目中,在查询后,我将图像 src 发送到一个 JS 文件,然后该文件将使用这些图像 src 和一些文本数据在我的主页上动态创建弹出框。

前任:popover_photo.src = 'media/' + popover_data['photo__src']

在我的项目中添加国际化后,我的所有页面都以语言代码为前缀,例如“en”或“es”,问题是我的图像 srcs 也自动以语言代码为前缀。我将得到“en/my-exemple-image.png”,而不是“media/my-exemple-image.png”,并且找不到图像文件。

那么,有没有办法在特定端点上的 django 中有条件地删除语言前缀,或者更具体地说,有没有办法将我对媒体文件夹的调用从语言前缀中排除?

如果任何开发人员愿意分享有关此问题的解决方法,请提前致谢!

我的主要 urls.py 目前看起来像这样(我仍在开发中,但我将在一段时间内使用 AWS S3 来存储我的图像,是否会出现同样的问题?

urlpatterns = [
    path('admin/', admin.site.urls),
    path('__debug__/', include('debug_toolbar.urls')),
]

urlpatterns += urlpatterns + i18n_patterns(
    path('rosetta/', include('rosetta.urls')),
    path('', include('core.example_app.urls', namespace='example_app')),
)

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Django 静态 国际化 django-urls

评论

0赞 nigel239 11/8/2023
您将在添加 i18 模式之前进行添加。flow:定义 urlpatterns,附加媒体模式,然后添加静态模式。
0赞 Antz 11/8/2023
我以前尝试过,但它不起作用,它仍然在我的媒体位置之前预加一个语言后缀。
0赞 nigel239 11/9/2023
您确定文件存在吗?使用本地化时;Django 倾向于在 404s 页后附加前缀。

答: 暂无答案