将变量传递给Django 2中的href模板

时间:2019-06-05 21:29:00

标签: html django

我的views.py Django 2项目中具有以下功能,并且我试图将views.py中的变量“ stylefolder”传递给我的base.html模板,以便在链接标记中动态获取正确的href。 / p>

下面是我当前的代码:

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 }}' %}">

问题是当我查看页面的view:Source部分时,结果是:

 <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">

要在href标记中获取“ /static/cryptoblog/style.css”,我应该怎么做?

2 个答案:

答案 0 :(得分:1)

由于您位于 template标记中,因此不应添加双大括号{{ .. }},而可以使用变量名,例如:

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

获得/static/%7B%7B%20stylefolder%20%7D%7D的原因是因为这是'{{ stylefolder }}'字符串的percent-encoding [wiki]。这是合乎逻辑的,因为看起来您传递了字符串 literal

>>> from urllib.parse import unquote
>>> unquote('/static/%7B%7B%20stylefolder%20%7D%7D')
'/static/{{ stylefolder }}'

答案 1 :(得分:1)

您可以执行以下操作: href="/static/{{ stylefolder }}">