Django: как использовать статические файлы (простой случай, jquery) - PullRequest
1 голос
/ 24 августа 2011

Я пытаюсь использовать jQuery на сайте Django. Мне нужно включить библиотеку jQuery.js. Я много читал о статических файлах Django, но не думаю, что кто-то задавал этот конкретный вопрос. У меня есть только три статических файла для обслуживания: jquery.js, anothersmallfile.js и styles.css. Документы Django по обслуживанию статических файлов говорят:

"Для небольших проектов это не имеет большого значения, поскольку вы можете просто хранить статические файлы там, где их может найти ваш веб-сервер. ссылка

Я бы хотел "просто держать их где-нибудь, чтобы мой веб-сервер мог их найти", потому что в других местах документы Django четко заявляют (предупреждают), что их метод обслуживания статических файлов предназначен только для среды разработки. У меня есть только несколько статических файлов, и я просто хочу самое простое безопасное решение.

К сожалению, я не могу заставить его работать. Неважно, куда я положил файлы, Джанго не может их найти. Отладка через консоль разработчика Chrome. Я вижу, что получаю ошибку 404:

GET http://127.0.0.1:8000/templates/polls/jquery.js 404 (NOT FOUND)

Я новичок в работе сервера. Должен ли я А.) указать мой файл urls.py, где искать статические файлы? или, возможно, проблема в B.) что я неправильно понял эту проблему - Django является моим веб-сервером (для производства), поэтому сейчас я должен использовать решение статических файлов Django?

Не похоже, чтобы моим шаблонам было очень сложно просто распознать файл .js, который находится в том же каталоге, что и они. Я что-то пропустил?

Отредактируйте, прежде чем я получу больше отрицательных голосов: я говорю об этом отрывке со страницы, указанной выше:

///////////////////////

Разработчики Django в основном занимаются динамическими частями веб-приложений - представлениями и шаблонами, которые отображаются заново для каждого запроса. Но у веб-приложений есть и другие части: статические файлы (изображения, CSS, Javascript и т. Д.), Которые необходимы для отображения всей веб-страницы.

Для небольших проектов это не имеет большого значения, поскольку вы можете просто хранить статические файлы там, где их может найти ваш веб-сервер. Однако в более крупных проектах , особенно в тех, которые состоят из нескольких приложений, работа с несколькими наборами статических файлов, предоставляемых каждым приложением, начинает усложняться.

Вот для чего предназначен django.contrib.staticfiles : он собирает статические файлы из каждого вашего приложения (и из любых других указанных вами мест) в одно место, которое можно легко обслуживать на производстве.

/////////////////// Акцент добавлен

Так что, если это то, для чего предназначен django.contrib.staticfiles, какое простое решение? Я спорю, что это повтор предыдущих вопросов.

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Вы должны прочитать эту документацию более внимательно.Это предупреждение для производства development вы используете этот метод статического обслуживания, т.е. помещаете его в свой urls.py.И эта документация также покажет, что каталог шаблонов не является подходящим местом для их размещения: отдельный статический каталог или каталог мультимедиа.

Редактировать после комментария Я действительно не понимаю вашегокомментарий.Либо вы делаете это в процессе разработки через статическое представление обслуживания, либо вы используете свой рабочий сервер.Но вы говорите, что у вас нет рабочего сервера.Когда вы получаете один из них, будь то Apache, Nginx или что-то еще, вы помещаете ваши статические файлы в каталог и говорите этому серверу обслужить файлы оттуда.Это является простым решением.Приложение staticfiles, как и в приведенных вами документах, предназначено для случаев, когда у вас много файлов в разных приложениях (и оно упрощает переход от разработки к производству, а не усложняет его, как вам кажется).

1 голос
/ 06 сентября 2012

Предположим, ваше приложение имеет вид www.

  1. setting.py -> STATIC_ROOT = 'static /'
  2. make dir www / static
  3. make file www /static / some.html
  4. в браузере localhost: 8000 / static / some.html

Вот и все.

...