Copy Source | Copy HTML- from django.utils import simplejson
-
- class DatetimeJSONEncoder(simplejson.JSONEncoder):
-
- class DateInt(int):
- '''
Наследуемся от int, потому что тогда значение будет без "".
В других случаях получим: "new Date(100500)" и при eval будет просто
строка.
'''
- def __str__(self):
- return 'new Date(%s)' % (self*1000)
-
- def default(self, o):
- from django.utils import datetime_safe
- from datetime import datetime
- import time
-
- if isinstance(o, datetime):
- d = datetime_safe.new_datetime(o)
- return self.DateInt(int(time.mktime(d.timetuple())))
- else:
- return super(DatetimeJSONEncoder, self).default(o)
-
- #example
- from datetime import datetime
- from django.utils import simplejson
-
- data = dict(date=datetime.now())
- json = simplejson.dumps(data, cls=DjangoJSONEncoder)
Заметочки
пятница, 23 июля 2010 г.
Python datetime to javascript Date
В Django есть DjangoJSONEncoder, который используется при конвертировании данных в json-формат. Он форматирует дату в строку. Пришлось написать свой енкодер, что бы на клиенте получать обьект Date, а не строку.
Теги:
javascript,
Python
среда, 21 июля 2010 г.
Ковертируем текст из файла в utf8
Понадобилось читать из файлов субтитры, парсить и складывать в БД. Как всегда проблемы с кодировкой. Гугл подсказал вот такой вот модуль: сhardet.
Copy Source | Copy HTML
- import chardet
- text = subtitles.read()
- text = unicode(text, chardet.detect(text)['encoding'])
Теги:
Python
вторник, 20 июля 2010 г.
Подгрузка связанных моделей, ч.2
Собственно пылятся еще две функции, неизвестной полезности, для подгрузки связаных моделей: для GenericForeignKey и ForeignKey(null=True). Работало на Django 1.1. Думаю с небольшим "допилом" будет и на 1.2 работать. Все это делалось для комментариев. Первой ф-цией подгружали комментируемые обьекты, а второй - пользователей, которые комментировали.
четверг, 29 апреля 2010 г.
Ошибки валидации для ExtJs
Добавляем небольшую функцию для отображения ошибок в формах ExtJs. Названия полей Django-форма и ExtJs-должны совпадать, ну или переформатировать словарь ошибок. Такой же прием использовал и для jQuery.ajaxForm, только ошибки "врукопашную" отображал.
пятница, 26 марта 2010 г.
Устанавливаем значение в context навсегда
Собственно что натолкнуло
Самого удивило что значение установленное из Node в context сохраняется в пределах одного блока.
{% extends 'test/base.html' %}
{% load foo %}
{% block content %}
{% set_bar_value %}
{{ bar_value }} == 'BAR'
{% endblock %}
{% block menu %}
{{ bar_value }} == ''
{% endblock %}
Самого удивило что значение установленное из Node в context сохраняется в пределах одного блока.
{% extends 'test/base.html' %}
{% load foo %}
{% block content %}
{% set_bar_value %}
{{ bar_value }} == 'BAR'
{% endblock %}
{% block menu %}
{{ bar_value }} == ''
{% endblock %}
пятница, 28 августа 2009 г.
Без права редактирования
Опять же постил на djbook.ru.
Есть модель комментариев. Нужен интерфейс в админке для их модерирования. Модератор может только удалять комментарии, во избежания казусов "я такого не писал". Нужно убрать права на изменение записи и убрать все ссылки на страницу редактирования комментария.
Есть модель комментариев. Нужен интерфейс в админке для их модерирования. Модератор может только удалять комментарии, во избежания казусов "я такого не писал". Нужно убрать права на изменение записи и убрать все ссылки на страницу редактирования комментария.
Подгрузка связанных моделей (многие-ко-многим)
Постил когда-то на djbook.ru решил и сюда добавить.
Select_related не работает для обратных связей. В мануале Django, в примере, используется обычный менеджер для обратных связаных таблиц, который посылает запрос при обращении к ним. Можно, конечно, использовать raw sql, когда нет доступа к методам моделей, например, get_absolute_url и др. Функция load_related_m2m для обьектов в object_list получает все связаные(m2m) через поле field обьекты и заносит в поле "all_" % field обьекта. В результате получаем всего один лишний запрос на каждую связаную таблицу.
Вот здесь Анатолий Ларин запостил версию для Django 1.2.
Select_related не работает для обратных связей. В мануале Django, в примере, используется обычный менеджер для обратных связаных таблиц, который посылает запрос при обращении к ним. Можно, конечно, использовать raw sql, когда нет доступа к методам моделей, например, get_absolute_url и др. Функция load_related_m2m для обьектов в object_list получает все связаные(m2m) через поле field обьекты и заносит в поле "all_" % field обьекта. В результате получаем всего один лишний запрос на каждую связаную таблицу.
Вот здесь Анатолий Ларин запостил версию для Django 1.2.
Подписаться на:
Сообщения (Atom)