我在Django项目中激活了i18n,并在urls.py
中使用了i18n_patterns。只要URL中的语言代码更改,所有翻译都能正常工作并更改。问题出在媒体文件夹中的图片上。
我在媒体文件夹中有几张图片作为滑块背景,并且每隔几秒钟就会更改一次。使用此i18n_patterns,它从/en/media/
而不是/media/
读取媒体文件。在这种情况下,我只为英语创建了/en/media/
文件夹,为中国人创建了相同的文件夹/zh/media/
文件夹。但是问题是,即使图像在那里,它也总是返回404。 /zh/media/
文件夹中的所有图像均未显示。 /en/media/
文件夹中仅显示4张图像中的2张。这让我很困惑。希望你们对这里发生的事情有任何了解。
以下是相关文件中代码的一部分:
settings.py
LANGUAGE_CODE = 'en'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
LANGUAGES = [
('en', _('English')),
('zh', _('Chinese')),
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
urlpatterns = [
]
urlpatterns += i18n_patterns(
path('admin/', admin.site.urls),
path('', include('pages.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
template.html
<img src="media/{% image_file_name %}" />
在控制台上,即使文件存在,它也会显示如下。
[TIMESTAMP] "GET /zh/media/XXX.jpg HTTP/1.1" 404 2798
答案 0 :(得分:0)
使用<img src="media/{% image_file_name %}" />
是一种不好的做法。
请<img src="{{ image_field.url }}" />
执行此操作。该网址将正确呈现。您可以在official docs中阅读有关此主题的更多信息。