Mam pole modelu, które przechowuje listę adresów URL (tak, wiem, to jest niewłaściwy sposób) jako url1\nurl2\nurl3<...>
. Muszę podzielić pole na tablicę w moim szablonu, więc stworzyłem własny filtr:Szablony Django - podzielony ciąg na tablicę
@register.filter(name='split')
def split(value, arg):
return value.split(arg)
używam go w ten sposób:
{% with game.screenshots|split:"\n" as screens %}
{% for screen in screens %}
{{ screen }}<br>
{% endfor %}
{% endwith %}
ale jak widzę, nie podzielonego chcę pracować: Otrzymuję dane wyjściowe takie jak url1 url2 url3
(z liniowymi rozbiciami, jeśli spojrzę na źródło). Czemu?
Ma to więcej sensu. Uratowałeś mnie przed wieloma błędami. –
Pamiętaj jednak, że nadmiernie grube modele mogą stać się kupą nieosiągalnych rzeczy. Ten konkretny przypadek jest prawidłowy - konwertowałbyś niektóre ze swoich zserializowanych danych do Pythona, co ma sens w przypadku warstwy modelu. (Możesz nawet uczynić z tej metody wyliczoną właściwość.) Jeśli jednak chcesz umieścić metodę na swoim modelu * po prostu *, aby móc wywołać ją z szablonu, zastanów się dwa razy - może to byłoby w porządku, aby zrobić ten rodzaj przetwarzania w widoku (ach) :) – Tony
lepsze niż tagi szablonów, jeśli zawartość pochodzi z modeli. Model – WeizhongTu