Django i18n URL медиа-файл не найден - PullRequest
0 голосов
/ 27 марта 2019

Я активировал i18n в моем проекте Django и использовал i18n_patterns в моем urls.py.Все переводы работают нормально и меняются всякий раз, когда меняется код языка в URL.Проблема доходит до картинки в папке media.

У меня есть несколько изображений в папке мультимедиа в качестве фона слайдера, и они меняются каждые несколько секунд.С этим i18n_patterns он читает медиа-файлы из /en/media/ вместо /media/.В этом случае я создал папку /en/media/ только для английского языка и создал папку /zh/media/ для китайского языка.Но проблема в том, что он всегда возвращает 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 Ответ

0 голосов
/ 07 мая 2019

Неправильно использовать <img src="media/{% image_file_name %}" />.

Вместо этого <img src="{{ image_field.url }}" />.URL будет отображаться правильно, используя это.Вы можете прочитать больше на эту тему в официальных документах .

...