Django


Сайтът вече работи под Django 1.8

Публикувано на

На първи Април излезе новата версия на Django. Това много чакана версия, поне за мен. В нея има много нови неща, но някой от тях очаквах с нетърпение заради блога ми:

  1. Вече може лесно да се създават сложни SQL заявки и вече няма нужда от хака, който ползвах за филтриране на агрегиращ Count в Django, за който бях писал.
  2. Оправен е проблемът с inclusion_tag-овете, който пречеше да се полва django-wpadmin и Django Cached Template Loader

Сега вече сайтът работи с новата версия и нямам хакове с чист SQL код (дори в Django 1.8 хака не работи), а темплейтите са кеширани ...

Comments

Сайтът вече работи под Python3

Публикувано на

От едно известно време на сам сайтът е съвместим с Python3, но официално не беше качен на сървър с Python3. Най-накрая намерих малко свободно време за да  се реша на мигрирам сайта.

Тъй като сайтът се хоства на OpenShif, си създадох нов Cartridge с Python 3.3 и започнах с експериментите. Дългото забавяне (от както моят код беше съвместим с Python3 до реалното пускане на реална) бе, поради несъвместимостта на всички приложения които ползвам с новия Python.

В два предишни мои поста "Сайтът е с една стъпка по-близо до Python3" и "Излезе новата версия на django-imagekit"  бях ...

Comments

Django на Superhosting половин година по-късно

Публикувано на

Преди време бях написал блог пост "Как да подкараме Django на Superhosting.bg". Сега искам да напиша какво е положението половин година по-късно и дали има някакъв напредък.

Започвам с първото положително нещо - вече има Git, така че той може да бъде ползван за качване на проекта на сървъра на СуперХостинг.

Отностно версиите на Python - тук нямаме такъв успех. Все още има само Python2.6. Трябва да отбележа обаче, че Суперхостинг са се постарали да ни направят живота по-лесен, като предварително са инсталирали virtualenv, setuptools и pip. Така вече не се налага ръчното им инсталиране, което бях описал в ...

Comments

Излезе новата версия на django-imagekit

Публикувано на

Нова година, нов късмет! Излезе и новата версия на django-imagekit, която най-накрая потдържа Python 3.  За хората, които не са запознати с това приложение, това е библиотека която улеснява използването на изображения в моделите на Django. Причините, поради които съобщавам за новата версия на django-imagekit е,  че списъка с Python3 съвместими приложения за Django нараства с още едно, както и че заслугата за това се падна на мен. С приемането на този pull request бе добавена съвместимост на django-imagekit със Python 3.

Преди време бях писал, че Сайтът е с една стъпка по-близо до Python3, благодарение на django-tinymce. Сега благодарение ...

Comments

Сайтът е с една стъпка по-близо до Python3

Публикувано на

Благодарение на новата версия на django-tinymce (1.5.2), която има съвместтимост с Python 3 благодарение на този мой къмит ( https://github.com/aljosa/django-tinymce/commit/1df8fe70f081419e7e79ed8c9f8d1a2644c814df ), сайтът вече е с една стъпка по-близо да работи под Python 3. Новата версия на django-tinymce също така е съвместима и с последната версия на Django, а именно 1.6, която е с официална съвместимост с Python 3, а не както версия 1.5 - с експериментална.

За съжаление не всички външни приложения са съвместими с Python 3. Все оше django-disqus няма потдръжка, защото моят pull request не е приет https://github.com/arthurk/django-disqus ...

Comments

Сайтът вече се хоства на OpenShift

Публикувано на

До сега този сайт се хостваше от вкъщи, но реших, че няма нужда да има пуснат един компютър постоянно, който да вдига шум. За жалост трудно се намира безплатен Django хостинг, не е както с PHP. Някой би предложил Heroku, тъй като те имат безплатен план, но той е доста ограничен. Също така Heroku има един друг проблем - няма постоянен сторидж за файловете и трябва да се ползва Amazon S3. Това никак не ми допада като идея.

И така един ден случайно попаднах на OpenShift и видях, че имат безплатен план и реших да се възползвам. За разлика от Heroku ...

Comments

Филтриране на агрегиращ Count в Django

Публикувано на

ORM-ът на Django предлага възможност за лесно използване на агрегиращи SQL функции, като COUNT, SUM, MAX, MIN, AVG. Когато имаме две таблици с релация едно към много е много лесно да преброим всички "деца" на основният запис. Нека да разгледам следният пример. Имаме следните модели:

from django.db import models

class Category(models.Model):
title = models.CharField(max_length=128)
class Entry(models.Model):
category = models.ForeignKey(Category, related_name='entries')
title = models.CharField(max_length=128)
content = models.TextField()
is_published = models.BooleanField()

Имаме категории и към всяка категория може да имаме много статии. Ако искаме с една SQL заявка да вземем всички ...

Comments

Използване на django-imagekit за обработка на създаване на thumbnail изображения

Публикувано на

Когато правех галерията на този сайт, реших да не ползвам външна библиотека за генериране на умалените изображения. Тогава видях, че Image обектите от PIL библиотеката имат метод thumbnail и мога да ги създавам директно. В началото ми се видя добро решение, но все пак някак си save метода на модела Picture беше станал много грозен. За справка старият ми код. Използвах self.image._committed, правех неща преду super правех неща след super в следсвие от неща взети преди super. Не използвах default_storage, което означава, че кодът ми не е приложим ако медиа файловете не се намират на сървъра, на който се ...

Comments

Как да подкараме Django на Superhosting.bg

Публикувано на

EDIT: Направих си труда да проверя какво е положението със SuperHosting.bg половин година по-късно и ето резултата "Django на Superhosting половин година по-късно". Ако все пак ви интересува оригиналната статия, може да продължите с четенето.

 

Първо малко обща информация. В България трудно може да се намери подходящ Django хостинг,  може би заради това и Django не е нашумяло толкова още у нас, но се надявам това да се промени. Какви са разликите спрямо PHP. При PHP е лесно - вземаш кой да е хостинг (дори има и безплатни), копираш си сайта и той работи. За това може би повечето ...

Comments

Използване на Extjs и Django1.3

Публикувано на

Вчера започнах да разглежда по-сериозно JavaScript Framework-ът ExtJs и бях изпрвавен пред сериозен проблем. Както знаем в Django1.3 има csrf protection дори и на Ajax рекуестите. За това на първо време туториълът, който исках да пробвам не искаше да работи. Опитах се да слагам csrf_exempt, но заради спецификата на extdirect това не важи. След известно ровене попаднах на тази статия. Тя е за ExtJs4, a на мен ми трябва за ExtJs3, за това се наложи да изтрия няколко реда и в краен резултат да се получи това:

// Add csrf token to every ajax request
var token = Ext.util.Cookies ...
Comments

Сервиране на медия чрез middleware

Публикувано на

Сервирането на статичните файлове за dev сървъра на Django не е предвидено по подразбиране. По принцип се дават решения от типа:

if settings.DEBUG:
    urlpatterns = urlpatterns + patterns('django.views.static',
        url(r'^media/(?P<path>.*)$', 'serve', {
'document_root': settings.MEDIA_ROOT,
'show_indexes':True}),
)

Но така се пускат всички middleware-и, което е излишно действие. На нас ни трябва само статичните файлове, коиото по принцип на production сървъра ще ги сервира nginx или apache. За целта можем да си направим простичък Middleware който да го сложим да се изпълнява първи, като проверява дали текущият път започва със settings.MEDIA_URL. Ако е така значи не е ...

Comments