Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Добавление собственных фильтров к форме [RSS Feed]

#1 Янв. 19, 2016 00:12:54

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление собственных фильтров к форме

Здравствуйте! Помогите пожалуйста добавить несколько фильтров к форме:

myfilters.py
:

from django import template
    
    register = template.Library()
    
    
    @register.filter(name='addclass')
    def addclass(value, arg):
        return value.as_widget(attrs={'class': arg})
    
    
    @register.filter
    def placeholder(field, args=None):
        if args == None:
            return field
        field.field.widget.attrs.update({ "placeholder": args })
        return field

В шаблоне делаю так:

{{ form.username|addclass:'form-control'|placeholder:'Enter your name'}}

Возникает такая ошибка:

Traceback (most recent call last):
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
        response = self.process_exception_by_middleware(e, request)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/home/megoloman/Django_1_9/bin/Deploy/test_site/apps/contact_info/views.py", line 121, in register
        return render_to_response("contact_info/register.html", args)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/shortcuts.py", line 39, in render_to_response
        content = loader.render_to_string(template_name, context, using=using)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/loader.py", line 97, in render_to_string
        return template.render(context, request)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/backends/django.py", line 95, in render
        return self.template.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 206, in render
        return self._render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 197, in _render
        return self.nodelist.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 988, in render
        bit = node.render_annotated(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 955, in render_annotated
        return self.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 173, in render
        return compiled_parent._render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 197, in _render
        return self.nodelist.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 988, in render
        bit = node.render_annotated(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 955, in render_annotated
        return self.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 69, in render
        result = block.nodelist.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 988, in render
        bit = node.render_annotated(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 955, in render_annotated
        return self.render(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 1039, in render
        output = self.filter_expression.resolve(context)
      File "/home/megoloman/Django_1_9/local/lib/python2.7/site-packages/django/template/base.py", line 732, in resolve
        new_obj = func(obj, *arg_vals)
      File "/home/megoloman/Django_1_9/bin/Deploy/test_site/apps/contact_info/templatetags/myfilters.py", line 15, in placeholder
        field.field.widget.attrs.update({ "placeholder": args })
    AttributeError: 'SafeText' object has no attribute 'field'

Отредактировано megoloman (Янв. 19, 2016 00:13:49)

Офлайн

#2 Янв. 20, 2016 10:46:51

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Добавление собственных фильтров к форме

Используйте django-widget-tweaks

Офлайн

  • Начало
  • » Django
  • » Добавление собственных фильтров к форме[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version