2016-01-26 3 views
0

Я пытаюсь установить фоновое изображение с помощью jinja2. Я сумел обслуживать свой файл с моего сервера dev и могу опубликовать изображение в документе, но я хочу, чтобы он сформировал хороший фон со всем остальным сверху.jinja2 set background image

В качестве примера, я попытался это:

{% extends "layout.html" %} 

{% block body %} 
    {% if current_user.is_authenticated %} 
    {% if commPageData.background_image %}  
     <body background="{{'/images/'+commPageData.background_image}}"> 
    {% else %} 
     <body> 
    {% endif %} 
      A thing 
     </body> 

У меня есть файл CSS и файл макета, который дает поведение по умолчанию для шаблона. Как я могу получить хорошее фоновое изображение, которое я обслуживаю?

ответ

1

Вы, кажется, пытаетесь сказать переднему концу использовать маршрутизацию приложения, не передавая ему правильные команды. Я предполагаю, что вы используете Flask. На самом деле, есть два способа (я могу придумать), чтобы нарезать этот хлеб, и это просто зависит от вас. Первый раз с использованием стандартного HTML и не встраивание питона маршруту приложения для поиска файла и выглядит следующим образом:

<body background="/path/to/image.jpg"> 

Но, если вы хотите воспользоваться преимуществами рамок и шаблонов, то вы должны использовать встроенный метод url_for

это выглядит примерно так:

<body background="{{ url_for('static', filename=commPageData.background_image) }}"> 

«статический» будет каталог в приложении, где этот образ жизни.

Теперь я не уверен, где commPageData.background_image происходит из вашего приложения. Мой снимок кода предполагает, что он служит в качестве значения, которое он распознает, если он будет возвращен к логике, если это имеет смысл, и это должно быть там, где вы указываете, что метод url_for ищет его, даже когда он динамически генерируется. Если у вас действительно есть конкретное изображение, которое вы хотите, чтобы сделать в качестве фона, он должен быть определен соответствующим образом:

<body background="{{ url_for('static', filename='image.jpg') }}"> 

Конечно, устарели в HTML5 и не может сделать должным образом во многом браузере. Это намного предпочтительнее использовать CSS вместо этого с

<body style="background:url({{'images/'+commPageData.background_image}});"> 

или положить его прямо в CSS файл

+0

Привет, у меня нет никаких проблем, обслуживающих изображения, и, кажется, yh дают советы о том, как сделать это. Вместо этого я только что обнаружил, что установка не добавляет фона. Я могу вставить изображение следующим образом: . Я просто не могу сделать фон. Это может иметь больше общего с css и layout.html, я не уверен. – user442920

+1

Состояние тела устарело, поэтому оно может зависеть от вашего браузера. Гораздо предпочтительнее использовать CSS вместо tadamhicks

+0

Эй, в этом была проблема. Благодарю. Я отметил ваш оригинальный пост в качестве ответа, вы можете отредактировать его, чтобы добавить свой комментарий ... dunno, если это имеет смысл. – user442920