Найти - Пользователи
Полная версия: Создание собственного фильтра
Начало » Django » Создание собственного фильтра
1 2
xxnikolayxx
Доброго времени суток дорогие форумчане.
Я решил создать собственный фильтр для использования в шаблоне.
Давно хотел попробовать, но руки никак не доходили.
Сразу возникли проблемы.
Что я имею:
1. Приложение с моделью и представлением
И собственно фильтр.
На код не обращайте внимания, уверен - написан с ошибками, давно не писал на чистом Python, забыл уже все.
from django.template.defaultfilters import stringfilter
from django import template
register = template.Library()
@register.filter
@stringfilter
def sell_price(value):
    if self.sell_price.sell:
        if self.sell_price.sell.how_m:
            value.sell_price = self.sell_price.price-self.sell_price.sell.how_m
        elif self.sell_price.sell.how_p:
            value.sell_price = self.sell_price.price-((self.sell_price.price/100)*self.sell_price.sell.how_p)
    else:
        value.sell=0
    return value.sell_price()

В чем собственно вопрос:
Куда прописывать фильтр и как правильно возвращать результат?
Доку читал, читаю и буду читать, но что-то ответы на эти вопросы для себя не нашел.
appetito
xxnikolayxx
Доку читал, читаю и буду читать, но что-то ответы на эти вопросы для себя не нашел
значит нужно еще читать

Вот тут первые несколько абзацев
xxnikolayxx
В чем проблема?
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe
from things.models import Path, Margin, Sell, View, Tissue, Thing

@register.filter(needs_autoescape=True)
def price(id, autoescape=None):
m3 = Thing.objects.get(id=id)
price = m3.price
if m3.sell.name_sell=="product_today":
summa = m3.price+((m3.price/100)*m3.margin.how_mach + m3.margin.how_maney) - ((m3.price/100)*m3.sell.how_mach + m3.sell.how_maney)
else:
how_mach_sell = m3.name.sell.how_mach + m3.path.sell.how_mach + m3.tissue.sell.how_mach + m3.sell.how_mach
how_maney_sell = m3.name.sell.how_maney + m3.path.sell.how_maney + m3.tissue.sell.how_maney + m3.sell.how_maney

how_mach_margin = m3.name.margin.how_mach + m3.path.margin.how_mach + m3.tissue.margin.how_mach + m3.margin.how_mach
how_maney_margin = m3.name.margin.how_maney + m3.path.margin.how_maney + m3.tissue.margin.how_maney + m3.margin.how_maney

summa = (m3.price + ((m3.price/100)*how_mach_margin + how_maney_margin)) - ((m3.price/100)*how_mach_sell + how_maney_sell)
result = '<font color="#990000"><strike>%s</strike></font><br>%s' % ((price), (summa))
return mark_safe(result)
Приложения для шаблонов лежит в папке templatetags, в папке с приложением things.
__init__.py лежит в этой же папке - скопированное из папки приложения - файл пустой, как и в приложении.
В настройках прописано приложение, sell - не прописано, пытался прописать что-то вроде things.sell - не вышло.
В шаблоне приписал {% load sell %}
Решил посмотреть - что получится.
В итоге:
IndentationError at /
expected an indented block (sell.py, line 10)

Файл sell.py перед Вами, отступы расставлены правильно.

В чем проблема?
appetito
xxnikolayxx
отступы расставлены правильно
блин чувак тебе интерпретатор пишет, что отступы расставлены неправильно
fata1ex
xxnikolayxx
В итоге:
IndentationError at /
expected an indented block (sell.py, line 10)

Файл sell.py перед Вами, отступы расставлены правильно

Это типичная проблема: вера в то, что машина может ошибаться. Проверяйте табы-пробелы, запустите pep8.
xxnikolayxx
Не понимаю.
Сегодня запустил машину - как проснулся, ничего не менял, все заработало…
xxnikolayxx
Видимо причудилось…
Спасибо за поддержку.
Отступы были правильные чес слово.
xxnikolayxx
А как Вам в целом написан фильтр?
Есть какие-то замечания, ошибки?
FishHook
xxnikolayxx
Не понимаю.
Сегодня запустил машину - как проснулся, ничего не менял, все заработало…
Остается только поверить в чудеса. А может гномики ночью расставили пробелы по человечески.

xxnikolayxx
FishHook
xxnikolayxx
Не понимаю.
Сегодня запустил машину - как проснулся, ничего не менял, все заработало…
Остается только поверить в чудеса. А может гномики ночью расставили пробелы по человечески.

Я погляжу ты юморист.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB