【问题标题】:Pass variable to href template in Django 2将变量传递给 Django 2 中的 href 模板
【发布时间】:2019-06-05 21:29:00
【问题描述】:

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

要在 href 标记中获取“/static/cryptoblog/style.css”,我应该进行哪些更改?

【问题讨论】:

    标签: html django


    【解决方案1】:

    因为你在一个模板标签中,你不应该添加双花括号{{ .. }},你可以使用变量名来代替,比如:

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

    之所以得到/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 }}'
    

    【讨论】:

      【解决方案2】:

      你可以这样做: href="/static/{{ stylefolder }}"&gt;

      【讨论】:

      • 但这不会显示/static(或提供静态文件的位置)。
      • 好的,我已经修改了上面的答案。
      猜你喜欢
      • 2019-04-03
      • 2014-11-30
      • 1970-01-01
      • 2020-01-06
      • 2011-05-09
      • 1970-01-01
      • 2018-12-03
      • 2020-10-23
      • 1970-01-01
      相关资源
      最近更新 更多