Я немного начинаю, когда дело доходит до Django и Google App Engine, и у меня возникли проблемы с настройкой путей проекта в настройках моего приложения. В частности, я пытаюсь ссылаться на файл CSS для использования с шаблоном. Моя структура каталогов выглядит следующим образом:Невозможно найти статический каталог в приложении Django
app/
app/
-'__init__'.py
-settings.py
-urls.py
-views.py
-wsgi.py
img/
static/
css/
-style.css
templates/
-index.html
Я думаю, что моя проблема заключается в настройках, основанных на работе я делал в течение последних нескольких часов. Я начал быть не может ссылаться на шаблон, но я понял, как сделать это, и позвольте мне объяснить, как:
В settings.py, у меня есть следующие элементы информации относительно шаблонов:
PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))
TEMPLATE_DIRS = (
PROJECT_PATH + '/templates',
)
Это оказалось достаточно простым. Я устанавливаю PROJECT_PATH, который содержит путь к проекту и добавляет каталог шаблонов. Тем не менее, у меня все еще есть проблемы с тем же, что и для статических файлов, и это я потерял. Что касается статических файлов У меня есть следующие в настройках:
PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
PROJECT_PATH + '/static',
)
Теоретически эти значения по умолчанию должны работать хорошо до тех пор, пока каталог я использую называется «/ статический /», но он не работает так же, как шаблоны. Я попробовал несколько разных вещей, чтобы попытаться заставить эти значения указывать на правильный каталог, но только один раз я действительно был успешным, и я думаю, что это была комбинация использования абсолютных путей, то есть «Пользователи/имя пользователя/приложение/static/css/', которые не имеют смысла после развертывания проекта, потому что я не размещаю его на своем компьютере. Также я, вероятно, переместил статический каталог внутри подпапки приложения, что также не нужно. Что отличается от статических файлов по сравнению с файлами шаблонов? Почему я могу использовать PROJECT_PATH и добавлять '/ static' для достижения того же результата, что и с шаблонами?
Некоторые другая полезная информация из моего проекта:
app/urls.py:
urlpatterns = patterns(
'',
url(r'^$', views.index, name='index'),
) + staticfiles_urlpatterns()
и:
templates/index.html:
<html>
<head>
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}" />
</head>
<body>
<!--Some stuff-->
</body>
</html>
и:
app.yaml:
application: siren-1157
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
- url: /static
static_dir: static
libraries:
- name: django
version: "latest"
EDIT: на основе некоторой обратной связи от @AlexMartelli I» ve добавил application_readable: true для app.yaml, в этом w ау:
- url: /static
static_dir: static
application_readable: true
Некоторые другие ресурсы я использовал во время поиска и устранения неисправностей, с плохим эффектом:
Django -- Can't get static CSS files to load https://docs.djangoproject.com/en/1.4/howto/static-files/#configuring-static-files https://github.com/divio/django-shop/blob/master/example/settings.py
Некоторые другие вещи, которые я пробовал:
Изменить ссылочный метод в индексе.HTML:
от
{% static 'css/style.css'}
к
{{ STATIC_URL }}css/style.css
Changed project_path с множеством различных модулей бя
Измененного STATIC_ROOT, STATIC_URL и STATICFILES_DIRS к различным различным значениям, от абсолютного пути ('/ Users/username/app/static /') к относительному пути с использованием PROJECT_PATH или производной
Может ли кто-нибудь указать мне в правильном направлении, выяснив, как настроить каталоги? Я чувствую, что я рядом, но сейчас это сводит меня с ума.
Поскольку вы упоминаете механизм приложения, можете ли вы показать нам свой 'app.yaml'? Если вы объявляете файлы как статические, они не будут доступны для кода вашего приложения, если вы не добавите 'application_readable: True' в соответствующую строфу - см. Https://cloud.google.com/appengine/docs/python/config/appconfig? hl = ru # Python_app_yaml_Static_file_handlers для всех деталей. –
Позвольте мне проверить это @AlexMartelli. Я посмотрю, есть ли у меня ответ на этот вопрос. Может быть хорошо проверить. –
@AlexMartelli Я добавил app.yaml на вопрос –