#django-i18n
#django-i18n
Вопрос:
Я активировал i18n в своем проекте Django и использовал i18n_patterns в своем urls.py
. Все переводы работают нормально и меняются всякий раз, когда меняется код языка в URL. Проблема связана с изображением в папке мультимедиа.
У меня есть несколько картинок в папке media в качестве фона слайдера, и они меняются каждые несколько секунд. С помощью этого i18n_patterns он считывает медиафайлы из /en/media/
вместо /media/
. В этом случае я создал /en/media/
папку только для английского языка и такую же папку /zh/media/
folder для китайского. Но проблема в том, что он всегда возвращает 404, даже если изображения есть. Все изображения в /zh/media/
папке не отображаются. И отображаются только 2 из 4 изображений в /en/media/
папке. Это меня очень смущает. Надеюсь, у вас, ребята, есть хоть какое-то представление о том, что здесь происходит.
Ниже приведена часть кода в связанных файлах:
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
Ответ №1:
Это плохая практика для использования <img src="media/{% image_file_name %}" />
.
Вместо этого сделайте это <img src="{{ image_field.url }}" />
. URL-адрес будет правильно отображен с использованием этого. Вы можете прочитать больше по этой теме в официальных документах.