2016-09-22 94 views
2

我正在Django網站上工作,這是一個生活在this site。我在輸出中由於HTML中不需要的空白而導致不需要的空格。Django模板標籤創建空間

例如,「01-1737,民間審查權威,不適用的語言,持續」,在大多數逗號之前有額外的空格。

我發現有類似問題的其他帖子,但沒有解決方案爲我工作。我嘗試了{%spaceless%}標記,但那不起作用。我唯一能做的工作就是將所有模板標籤放在for循環中,但我真的很想找到比這更可讀的解決方案。

下面是Django的模板代碼:

{% extends 'police_archive/base.html' %} 

{% block content %} 
    <h2> {{officer.first_name}} {{officer.last_name}}, badge #{{officer.badge}} </h2> 
    <p><strong>Department:</strong> {{officer.department}}</p> 
    <h2>Complaints</h2> 
    <ul> 
     {% for details in details_list %} 
      <li> 


       {% if details.incident.case_number %} 
        <a href='/police_archive/complaint/{{details.incident.case_number}}'> 
         {{details.incident.case_number}} 
        </a> 
       {% else %} 
       No Case Number Found 
       {% endif %} 


       {% if details.incident.office %} 
       , {{details.incident.get_office_display}} 
       {% else %} 
       , No office found 
       {% endif %} 

       {% if details.allegation %} 
       , {{details.allegation}} 
       {% endif %} 

       {% if details.finding %} 
       , {{details.finding}} 
       {% endif %} 

       {% if details.action %} 
       , {{details.action}} 
       {% endif %} 

      </li> 
     {% endfor %} 


{% endblock %} 

回答

1

原因{% spaceless %}沒有給刪除所有的空間,你是因爲它只能之間的HTML標籤。您的空白字段<li>標籤內。

我似乎無法爲Django的標準模板系統找到一個好的解決方案,但它看起來像Jinja提供您正在尋找。它使用一個破折號剝去尾隨或前導空格:

{% for item in seq -%} 
    {{ item }} 
{%- endfor %} 

爲了使用,而不是Django的默認模板系統神社,你必須通過Django's docs描述更改settings.py文件:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.jinja2.Jinja2.', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      # ... some options here ... 
     }, 
    }, 
] 
+0

感謝這個想法。我試圖把它搞清楚,然後放棄。這隻會導致單個文件出現問題,所以我選擇了醜陋的單線解決方案。 –