Почему статические ресурсы не загружаются, когда я получаю доступ к своему приложению пирамиды через IP-адрес моего компьютера? - PullRequest
2 голосов
/ 31 января 2012

У меня есть приложение Pyramid, которое я разрабатывал и просматривал локально через http://localhost:6543, что и предлагают документы для пастеров.Существуют различные ресурсы, например, .css файлы, доступные в каталоге static, которые я сделал доступными через config.add_static_view('static','static') Когда я просматриваю его через localhost, все работает нормально, мои файлы .css загружаются, и всехорошо.Однако, когда я просматриваю приложение через имя хоста / IP-адрес моего компьютера, статические ресурсы не загружаются.

Недавно установленная платформа Pyramid paster отображает то же поведение.Я прошел и следовал описательной документации Pyramid на этапе , просматривая приложение , и все работает, как описано.Но измените URL в строке адреса с http://localhost:6543 на http://my.host.name:6543, и таблицы стилей не будут загружены.

Активы доступны;наберите http://my.host.name:6543/static/pylons.css на только что созданной платформе Pyramid paster и вы можете прочитать содержимое css, но оно не загружается при загрузке корневой страницы.Firebug указывает, что эти ресурсы запрашиваются, но никогда не принимаются.

Что здесь происходит, и как я могу убедиться, что мои статические активы загружаются, когда я запрашиваю их через что-то, кроме localhost?

Редактировать , чтобы добавитьнекоторый код.Это из подмостей под пирамиду starter, которые я не модифицировал и которые демонстрируют то же поведение, что и мое приложение;это можно считать минимальным примером.

из пакета __init__.py:

def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/')
    config.scan()
    return config.make_wsgi_app()

complete views.py:

from pyramid.view import view_config

@view_config(route_name='home', renderer='templates/mytemplate.pt')
def my_view(request):
    return {'project':'TestProject'}

соответствующая строка из templates/mytemplate.pt:

<link rel="stylesheet" href="/static/pylons.css" type="text/css" media="screen" 
charset="utf-8" />

Где static/pylons.css находится в каталоге static в корневом каталоге.

Снова открытие http://0.0.0.0:6543 в браузере (FF10) работает нормально, http://my.host.name:6543 отображаетстраница без информации о стиле;но http://my.host.name:6543/static/pylons.css дает мне текст таблицы стилей.

1 Ответ

3 голосов
/ 01 февраля 2012

Без возможности взглянуть на ваш код довольно сложно ответить на этот вопрос. Я полагаю, что на основе подобного опыта вы можете не использовать метод static_url внутри своих шаблонов. Ниже приведен еще один способ ссылки на статические ресурсы в ваших шаблонах:

<link rel="stylesheet" href="${request.static_url('app:static/css/app.css')}">

Вы используете это? Использование чего-либо еще, безусловно, вызовет поведение, которое вы видите.

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

...