Скачать:      1.2.1  |  1.2.0  

Django: фильтры – получение значения словаря из элемента массива

January 18th, 2015

допустим у вас имеется список , внутри которого лежат элементы – словари

mylistofdict = [{"param": "value1"}, {"param": "value2"}, ... {}]

для того что бы получить значение value из второго элемента списка, на чистом языке мы бы сделали так:

print mylistofdict[1]["param"] # value2

но если нам надо нечто подобное сделать в шаблонах django, примерно так (не работает)

{{ mylistofdict[1]["param"] }}

или так не будет работать

{{ mylistofdict[1].param }}

для того что бы оно работало, надо добавить кастомные фильтры в систему:

from django.template.defaulttags import register


@register.filter
def get_item(dictionary, key):
    if dictionary:
        return dictionary.get(key)
    else:
        return ""


@register.filter
def get_list_el(array, key):
    try:
        el = array[key]
    except:
        el = ""
    return el

(сразу скажу, писал для своих целей, валидации по сути никакой)

и для того что бы получить значение, напишем следующий код:

<div>{{ mylistofdict|get_list_el:INDEX|get_item:"param" }}</div>

где INDEX – необходимый элемент списка


Django: вариант фильтрации с условием “не равно” A != B

January 16th, 2015

Для того что бы сделать фильтрацию с условием field != B в модели, т.е.:

SELECT * FROM table WHERE field != B

то нужно импортировать функционал:

from django.db.models import Q

а выборку в вашей модели сделать как:

model.objects.get(~Q(field = B))

источник: http://twigstechtips.blogspot.ru/2011/01/django-how-to-filter-using-equals-and.html

Django: Авторизация через E-mail

January 10th, 2015

Создайте файл backends.py в любом приложении либо в корне, допустим /project/custom/backends.py

from django.contrib.auth.models import User, check_password

class EmailAuthBackend(object):
    """
    Email Authentication Backend
    
    Allows a user to sign in using an email/password pair rather than
    a username/password pair.
    """

    def authenticate(self, username=None, password=None):
        """ Authenticate a user based on email address as the user name. """
        try:
            user = User.objects.get(email=username)
            if user.check_password(password):
                return user
        except User.DoesNotExist:
            return None

    def get_user(self, user_id):
        """ Get a User object from the user_id. """
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

далее, в settings.py проекта укажите:

AUTHENTICATION_BACKENDS = ('custom.backends.EmailAuthBackend',)

тем самым вы включите кастомный обработчик авторизации

пример использования:

def login(request):
    if request.method == 'POST':
        useremail = request.POST['useremail']
        password = request.POST['password']

        user = auth.authenticate(username=useremail, password=password)

        if user is not None and \
                user.is_active and \
                user.groups.filter(name=settings.PROMOTER_GROUP).exists():
            auth.login(request, user)
            return HttpResponseRedirect("/promoter/")
        else:
            return HttpResponseRedirect("/promoter/login/")

    return render(request, 'promoters/auth.html', {})

Оригинал: http://www.micahcarrick.com/django-email-authentication.html

Django: Изменение названия группы моделей в админке

December 28th, 2014

111

для того что бы изменить название группы модели, а по сути – название приложения (app) надо сделать следующее:

1. завести в директории приложения файл apps.py и внутри него завести код:

from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _


class AuthConfig(AppConfig):
    name = 'yourappname'
    verbose_name = _("Your app name")

2. в этой же директории изменить _init_.py:

default_app_config = 'yourappname.apps.AuthConfig'

все. это решает эту проблему

Django: расширение моделей

December 28th, 2014

Проект pic2net пока закрыт, буду сюда пока писать статьи на тему python + django + php + bitrix

Как я делал, может это не лучший вариант, я создал
python manage.py startapp custom
внутри этого App я изменил models.py + admin.py

Допустим надо расширить модель FlatPage дополнительными полями в модели:

custom/models.py:

CharField(max_length=255, default='').contribute_to_class(FlatPage, 'seo_title')
CharField(max_length=255, default='').contribute_to_class(FlatPage, 'seo_desc')
CharField(max_length=255, default='').contribute_to_class(FlatPage, 'seo_keys')

для того что бы расширить Админку этих самым FlatPage:

custom/admin.py:

class FlatpageForm(FlatpageFormOld):
    content = forms.CharField(widget=CKEditorWidget())

    class Meta:
        model = FlatPage
        exclude = ['']


class FlatPageAdmin(FlatPageAdminOld):
    form = FlatpageForm

    list_display = ['title', 'url']

    fieldsets = (
        (
            None, {'fields': ('url', 'title', 'content', 'sites', 'seo_title', 'seo_desc', 'seo_keys')}
        ),
    )


admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)

Аналогично правятся и другие пакеты, к которым например нельзя обратится хардкорно
сразу скажу, это нагугленные и мной протестированные варианты, работоспособные
тестировалось на Django 1.7 + migrations
Все миграции выполняются идеально!

отключил говнорекламу

March 26th, 2014

свершилось, отключил говнорекламу.

По поводу OSX версии

March 22nd, 2014

Сейчас додумываю дизайн, тестирую всякие разные возможности, т.к. со средой разработки еще мало знаком, дизайн будет отличаться немного от виндовой версии. Будет немного упрощен функционал, постепенно буду добивать новыми возможностями.

Процесс идет, медленно, но делаю.

По поводу рекламы, какую то часть пока оставлю, но, сделаю возможность авторизации по аккаунту, те кто будет зарегистрирован и авторизован на сайте и в приложении – рекламу видеть не будут.

Для мобильных устройств тоже рекламу отключу.

Точно такие же доработки сделаю для виндовой версии, но после выхода версии под OSX

будет смена дизайна скорее всего, возможно поменяю движок сайта на свою ЦМС, вобщем планов много. времени мало ))

Работа кипит. Beta Pic2net Mac OS X.. скоро…

March 2nd, 2014

Так, первые тесты работы приложения под Маком.

http://pic2net.ru/ss/ZDUDPcSP

что работает уже:

1. есть фуллскринн граббер
2. есть кастомная выборка области экрана, почти 1 в 1 как на виндовой версии
3. пока на снимке можно рисовать только карандашом (кривые линии рисовать)
4. происходит отправка, для мак версии сделал новый путь в URL
старые варианты остались
5. работает уведомление системное (подача в центр уведомлений сообщения и в виде попап сообщения)
6. работают глобальные горячие клавиши (весь экран, часть экрана)

версия уже рабочая, но без функционала дополнительного, само ядро написал, буду помаленьку дорабатывать.

возможно в конце недели бетку выкачу..

Версия под MacOSx в разработке

February 26th, 2014

Всем привет, не знаю сколько, но наверное более полугода уже ничего не писал и не делал для проекта
думаю буду давать новую жизнь проекту
буду избавляться от всякой плохой рекламы
выпускать новые версии,но пока будет новая версия и первая версия это под MacOSX

сейчас уже готово:
1. глобальные горячие клавиши
2. создание скриншота
3. рисование карандашом на холсте со скриншотом

самое главное – сделал
остались мелочи, которые по логике похожи на те что в версии для виндовс

так же добавлю возможность сохранять в разные скриншотхостеры так называемые, в дробокс и т.п.
короче по последнему слову техники )))))

но хочу сразу предупредить, все фишки будут появляться постепенно, т.к. Objective-C, XCODE, Cocoa я начал изучать примерно недели две назад :) но благодаря гуглу, видео урокам на ютубе – все понимается очень хорошо!

Ожидайте! буду информировать о прогрессе, для винды пока версия та же, как разберусь с фишками хостерами , дробоксом и т.п. – добавлю и в виндовую версию

под МАКОС пока откладывается разработка

October 13th, 2013

нет времени, пока разбираюсь с рекламой, ищу площадки другие
уж извиняйте :)