Как получить доступ к файлу .env в jquery?

Итак, у меня есть проект django с jquery для интерактивности во внешнем интерфейсе. У меня уже есть файл .env для хранения конфигурации базы данных, которая будет использоваться django settings.py, но мне также нужен jquery для доступа к файлу .env.

Из того, что я прочитал в документации dotenv, мне нужно установить dotenv с помощью npm или yarn. Но я думаю, что в jquery нет / не используется npm? Я новичок в javascript


person cainam    schedule 30.09.2019    source источник
comment
Это невозможно. Javascript / jquery работает во внешнем интерфейсе, то есть в браузере ваших пользователей. .Env, о котором вы говорите, находится на сервере, на котором запущен Django. Чего именно вы пытаетесь достичь?   -  person dirkgroten    schedule 30.09.2019
comment
@dirkgroten Я хочу сохранить имя хоста в файле .env. Я использую jquery для доступа к API из фреймворка django rest. Проблема в том, что при локальном запуске я использую localhost, а когда я развертываю код, он должен использовать другой URL-адрес / хост.   -  person cainam    schedule 30.09.2019


Ответы (1)


Ваш скрипт не может иметь доступ к .env, так как он работает в браузерах ваших пользователей.

Во-первых, если ваш API размещен в том же домене, что и сама ваша страница, вам не нужно указывать имя хоста, просто используйте относительные URL-адреса ('/ api / v1 / path / to / resource /'). Таким образом, вашему сценарию не нужно знать хост. Кроме того, в Javascript document.location предоставит вам всю информацию о текущем хосте.

Во-вторых, если это не то же самое или вы хотите, чтобы Django установил другие параметры URL-адреса для использования вашим скриптом, установите переменную в своем шаблоне, используя переменную контекста. Например. если ваше представление извлекает settings.API_URL и передает его как api_url в контекст, вы можете сделать это в своем шаблоне:

<script>var APIUrl = "{{ api_url }}"</script>

Затем, пока ваш скрипт jQuery запускается после того, как эта переменная была определена, он будет иметь к ней доступ.

person dirkgroten    schedule 30.09.2019