2015-01-21 3 views
0

У меня есть эта строка 'doc.specalization.name' из моих представлений, которые я просматриваю в шаблонах, чтобы увидеть, заканчивается ли это с 's'. Он это делает, я хочу, чтобы удалить «S»Django проверить последний символ в строке python

Я попробовал этот код, но я получаю Could not parse the remainder: '('s')' from 'doc.specialization.name.endswith('s')'

{% if doc.specialization.name.endswith('s') %} 
     <h3> {{doc.specialization.name|slice:":-1"}} </h3> 
{% endif %} 
+0

Напишите свой шаблонный тег. –

ответ

0

Ты лучше делать это в вашем представлении кода, чем в шаблоне. Например:

for doc in doc_records: 
    if doc.specialization.name.endswith('s'): 
     doc.specialization.name = doc.specialization.name[:-1] 

Но не сохранить запись, предполагая, что это только для целей отображения

+0

, делая это, вы заменяете существующие данные, которые, вероятно, не нужны OP. Вы хотели сохранить его в другом списке? – karthikr

2

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

{% ifequal doc.specialization.name|default:""|slice:"-1" "s" %} 
    {# do your stuff #} 
{% endifequal %} 

default только запасной вариант для None значений

Документация по slice here

Можно даже использовать with tag, чтобы избежать вычисления то же самое, несколько раз

1

Ответ Karthikr близок. Если в будущих версиях Django планируется отклонение ifequal, вы можете использовать метод ниже. Вам также нужно добавить ':' после '-1'.

{% if doc.specialization.name|default:""|slice:"-1:" == "s" %} 
    <h3> {{ doc.specialization.name|slice:":-1" }} </h3> 
{% else %} 
    <h3> {{ doc.specialization.name }} </h3> 
{% endif %} 
Смежные вопросы