В Django загружайте файл CSS в зависимости от имени переменной и только если он существует - PullRequest
0 голосов
/ 30 апреля 2018

В Django я хочу загрузить файл CSS, только если он существует. Имя должно быть создано с помощью имени переменной.

Примерно такие работы:

<link rel="stylesheet" href="/static/core/css/{{ site.id }}.css" />

Но проблема в том, что он всегда пытается загрузить файл независимо от того, существует он или нет. Также я хотел бы использовать «статический» шаблон тега, но это не работает:

<link rel="stylesheet" href="{% static "core/css/{{ site.id }}.css" %}" />

Может кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Вы можете сделать как

<link rel="stylesheet" href="{% static '' %}core/css/{{ site.id }}.css"/>

А для проверки, выходит файл или нет, вы можете написать собственный тег шаблона

Приложение / templatetags / static_check.py

from django import template
from django.conf import settings
from django.contrib.staticfiles import finders
from django.contrib.staticfiles.storage import staticfiles_storage
register = template.Library()

@register.filter
def is_static_file_exists(site_id):
    abs_path = finders.find('core/css/%s.css' % (site_id))
    return staticfiles_storage.exists(abs_path)

template.html

  {% load static static_check %}

  {% if site.id|is_static_file_exists %}
       <link rel="stylesheet" href="{% static '' %}core/css/{{ site.id }}.css"/>
  {% endif %} 
0 голосов
/ 30 апреля 2018

Просто используйте оператор if.

{% if site.id %}
    <link rel="stylesheet" href="{% static "core/css/"+{{ site.id}}+".css" %}" />
{% endif %}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...