Янв 24

Написана на python
https://github.com/squadette/sqlup

Теги:
Фев 28

Продолжение записи Интернационализация и локализация django.

Для перевода яваскрипта нужно

  1. В urls.py добавить урл для подгрузки функций интернационализации

    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', {'packages': ('my_project',),})
    

    словарь packages должен содержать один из пакетов, указанных в INSTALLED_APPS.

  2. Добавить в шаблон подгрузку это скрипта

    <script type="text/javascript" src="/jsi18n/"></script>
    
  3. В нужных местах воспользоваться функциями gettext, ngettext или interpolate
  4. Создаём файл с переводами для js командой

    django-admin makemessages -d djangojs -l ru
    
  5. Добавляем перевод в файл и компилируем его так же как и для переводов серверной части django
Теги:
Фев 26

На примере русского языка.
Continue reading »

Теги:
Фев 09

Никак не мог придумать, как озаглавить статью). Просто есть две вещи, которые хотел упомянуть.

Создаём метод класса, возвращающий модели класса, который может вернуть и только указанные поля всех удовлетворяющих условиям моделей.

from django.db import models
from django.contrib.auth.models import User
from django.db.models import Q

class Exercise( models.Model ):
	name = models.CharField( max_length = 255 )
	is_paired = models.BooleanField( default = False )
	user = models.ForeignKey( User, blank = True, null = True )

	@classmethod
	def getExercisesForUser(cls, User, Fields = ()):
		query = cls.objects.filter(Q(user = None) | Q(user = User))
		if Fields:
			query = query.only(*Fields)
		return query

Здесь нужно выделить два важных момента:

Теги:
Янв 05

Задача стояла следующая:
сделать карточку создания-редактирования тренировки, которое состоит из упражнений, каждое из которых состоит из подходов. При этом должна быть возможность создавать тренировку по шаблону, при этом должны выводиться формы упражнений с предзаполненными данными, а также пустые определённого количества форм для ввода подходов (количество задаётся в шаблоне). Также должна сохраниться валидация всех форм, невозможность сохранения тренировок без упражнений и упражнений без подходов.
Continue reading »

Теги:
Дек 19

Запустить новый проект
Перед запуском надо записать изменения в базу данных:

python manage.py syncdb

Также можно проверить на ошибки:

python manage.py validate

Запустить проект:

python manage.py runserver

Кстати, тут много про запуск Django в продакшн-окружении.

Теги:
Ноя 14
from django.http import HttpResponse
import simplejson as json
...
def my_view( request ):
   jsonDict = { "status": "success", "message": "everything's fine" }
   return HttpResponse( json.dumps( jsonDict ), mimetype="application/json" )

Подробнее о simplejson – в документации

Теги:
Ноя 10

Задача стояла следующая:
есть список сущностей (к примеру, упражнений), каждая из которых в форме выводится в виде нескольких полей ввода (к примеру, сеты и название упражнения), хочется иметь возможность яваскриптом добавлять/удалять упражнения, менять их положение.
Для этого были использованы формсеты (django.forms.formsets) и jquery на клиенте.

В теории всё так: в шаблон передаём формы из формсета (подводный камень тут – для правильной валидации нужно в шаблоне внутри формы нужно не забыть вписать скрытые инпуты, отвечающие за количество форм формсета на странице, для этого пишем в шаблоне {{ exercisesFormset.management_form }}).
В шаблоне у каждого упражнения присутствуют контролы для удаления/добавления и перемещения упражнений, после загрузки страницы ненужные контролы у каждого упражнения скрываются, а после, к примеру, добавления нового упражнения контролы перерисовываются.
Для удаления все поля ввода упражнения очищаются, после чего скрываются.

Это была теория, теперь практика. Ниже гольный код с комментариями.
Continue reading »

Теги:
Ноя 05

Хотелось использовать стандартную авторизацию, но нужно было, естественно, её расширить.
Вот как это получилось.
Continue reading »

Теги:
Ноя 05

Достаточно в urls.py добавить:

(r'^static/(?P
.*)$', 'django.views.static.serve', {'document_root': '/home/.../static'}),

Для боевого сервера этот метод, конечно, использовать не стоит, но для разработки – самое то.

Теги:
preload preload preload