Замечательный простой скрипт, переводящий тег вида {% url some_path %} в {% url “some_path” %}. Нужно сохранить его в файл .py и запустить в директории вашего проекта:
import os, re
app_path = os.path.split(os.path.split(__file__)[0])[0]
PROJECT_ROOT = os.path.abspath(app_path)
def update_path(directory):
"Update {% url to Django 1.5 format"
for path, dirs, files in os.walk(directory):
print path, dirs
for fname in files:
print fname
if fname.endswith('.txt') or fname.endswith('.html'):
fpath = os.path.join(path, fname)
print fpath
with open(fpath) as f:
s = f.read()
s = re.sub(r"{% url '(\w+)' ", r'{% url "\1" ', s)
s = re.sub(r'{% url (\w+) ', r'{% url "\1" ', s)
with open(fpath, "w") as f:
f.write(s)
update_path(PROJECT_ROOT)
В большом проекте сэкономит кучу времени при миграции на Django 1.5 с прошлых версий.
Суперполезное приложение для работы с URL — позволяет просто добавлять/удалять параметры из GET строки через шаблонный тег. Например:
{% spurl base=request.get_full_path
set_query="popular=1"
remove_query_param="topcommented" %}
удалит из урла параметр topcommented и добавит popular=1.
Нашел замечательное приложение — django-watermark. Ипользуется для наложения водяных знаков на изображени. Никогда еще эта процедура не была такой легкой и приятной! =) Думаешь больше о том, где размещать изображение и как оно должно выглядеть, а не о том, как это наложение сделать технически.
И еще один из суперски удобных плюсов — изображения для водяных знаков просто загружаются через админку.
Нашел простой и безболезненный метод переноса данных Django сайта из MySQL в PostgreSQL в комментариях на одном блоге: http://tryolabs.com/Blog/2012/02/10/django-migrating-mysql-postgresql/.
Привожу мой вольный перевод комментария некоего Si Feng:
Мы можете лишиться некоторых специфичных фич PostgreSQL при переносе, если используете py-mysql2pgsql (Django использует разные SQL-запросы для создания баз). Я нашел лучший путь:
1. Выполним:
python manage.py dumpdata > django_data.json
для текущей базы данных MySQL. Мы получим “чистый” набор данных без какой-либо специфичной информации для конкретной базы данных.
2. Создадим новую базу данных в PostgreSQL, настроим settings.py, чтобы использовать ее, и затем выполним:
python manage.py syncdb
чтобы создать таблицы. Это важно, так как вы можете заметить, SQL, который использует Django для PostgreSQL, отличается от SQL для MySQL.
3. Выполним:
python manage.py sqlflush | psql -U myusername mydatabase
чтобы вычистить все данные из новой базы данных (сделать ее пустой).
4. Если вы используете сигнал “post_save” в вашей модели, вам возможно понадобится закомментировать вызов обработчика сигнала в процессе загрузки данных. Вот мой обходной маневр: https://code.djangoproject.com/ticket/17880. Если вы не пользуетесь никакими сигналами — проигнорируйте этот шаг.
5. Затем выполним
python manage.py loaddata django_data.json
. Теперь данные должны загрузиться.
6. Одна последняя вещь: не забудьте сбросить автоматические счетчики (sequences) запустив:
python manage.py sqlsequencereset appname | psql -U myusername mydatabase
. Вы должны сделать это для КАЖДОГО используемого приложения, включая встроенные в Django приложения и сторонние.
7. Готово!
Примечание: можно пользоваться и py-mysql2pgsql, но вы потеряете некоторые фишки, которые есть только в PostgreSQL. Я использовал этот скрипт для конвертации моей базы в начале, но потом столкнулся с некоторыми проблемами. Лучше всего просто импортировать “чистые” данные в новую созданную Django базу данных.
Уинстон Черчилль
А тем временем оказывается вышла альфа Django 1.4. И там разных плюшек не счесть. Вот из самого насущного, что особенно порадовало лично меня:
И еще много чего нужного и полезного в хозяйстве. Красота.
Очень жду выхода django-shop. У меня в арсенале есть несколько интернет-магазинов, которые сейчас работают на самописном магазинном движке. Он прост, эффективен, но все новые фичи приходится дописывать туда самостоятельно. Хотелось бы конечно иметь все эти возможности «из коробки» плюс еще много чего, что бывает нужно для реализации хорошего магазина.
Почему именно django-shop? Я сделал несколько проектов на django-cms, разработка которой инициирована той же конторой, divio, и остался очень доволен его гибкими возможностями и подходом — django-cms не ограничивает возможности разработчика до каких-то своих рамок, но дает ему инструмент, с помощью которого можно менять древовидную структуру сайта на лету. Выводить на уровень администратора все то, что в стандартных django-проектах бывает зашито в шаблонах и файлах проекта. Когда это бывает нужно — django-cms прекрасный инструмент. Также он отлично умеет справляться с древовидной кучей простых страниц.
В свое время я познакомился с Satchmo и LFS и пришел в ужас от этих монстров. Что-то невообразимое, имеющее много лишнего и не все нужное, с кривоватым интерфейсом, не вызвало никакого доверия, тк я не представлял, как продам это клиенту. Не знаю как поживают Сачмо и ЛФС сейчас, но пару лет назад они были ужасны.
Посему очень жду выхода django-shop, я верю в его разработчиков, верю в комманду django-cms, маленькой частью которой являюсь я сам (помогал им с документацией).
Сегодня увидел новость о том, что Django Shop версии 0.0.13 появился на pypi, и настроение мое улучшилось =)
Замечательная книга по рельсам. Написала очень доступным языком.
Полезно с ним периодически сверяться, чтобы не изобретать свои велосипеды, а использовать в своих проектах лучшие существующие готовые наработки.