Передайте переменную в шаблон href в Django 2 - PullRequest
1 голос
/ 06 июня 2019

У меня есть функция ниже в моем проекте views.py Django 2, и я пытаюсь передать переменную "stylefolder" из views.py в мой шаблон base.html, чтобы динамически получить правильный href в моем теге ссылки.

Ниже мой текущий код:

def home(request):
  products = Product.objects.order_by('-votes_total')
  paginator = Paginator(products, 10)
  page = request.GET.get('page')
  paged_listings = paginator.get_page(page)

  context = {
    'products':paged_listings,
    'stylefolder': 'cryptoblog/style.css'
  }
  return render(request,'home1.html', context)

В файле base.html у меня есть код ниже.

href="{% static '{{ stylefolder }}' %}">

Проблема в том, что когда я смотрю в раздел «Источник» на странице, я получаю в результате:

 <link rel="stylesheet" type="text/css" href="/static/%7B%7B%20stylefolder%20%7D%7D">

вместо желаемого результата:

 <link rel="stylesheet" type="text/css" href="/static/cryptoblog/style.css">

Что я должен изменить, чтобы получить "/static/cryptoblog/style.css" в теге href?

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Вы можете просто сделать: href="/static/{{ stylefolder }}">

1 голос
/ 06 июня 2019

Поскольку вы находитесь в шаблонном теге , вам не следует добавлять двойные фигурные скобки {{ .. }}, вместо этого вы можете использовать имя переменной, например:

<link href="{% static <b>stylefolder</b> %} rel="stylesheet" type="text/css"">

Причина, по которой вы получаете /static/%7B%7B%20stylefolder%20%7D%7D, заключается в том, что это кодировка процентов [wiki] строки '{{ stylefolder }}'. Это логично, поскольку похоже, что вы передали строку literal :

>>> from urllib.parse import unquote
>>> unquote('/static/%7B%7B%20stylefolder%20%7D%7D')
'/static/{{ stylefolder }}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...