Задача стояла следующая:
сделать карточку создания-редактирования тренировки, которое состоит из упражнений, каждое из которых состоит из подходов. При этом должна быть возможность создавать тренировку по шаблону, при этом должны выводиться формы упражнений с предзаполненными данными, а также пустые определённого количества форм для ввода подходов (количество задаётся в шаблоне). Также должна сохраниться валидация всех форм, невозможность сохранения тренировок без упражнений и упражнений без подходов.
Continue reading »
Запустить новый проект
Перед запуском надо записать изменения в базу данных:
python manage.py syncdb
Также можно проверить на ошибки:
python manage.py validate
Запустить проект:
python manage.py runserver
Кстати, тут много про запуск Django в продакшн-окружении.
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 – в документации
Задача стояла следующая:
есть список сущностей (к примеру, упражнений), каждая из которых в форме выводится в виде нескольких полей ввода (к примеру, сеты и название упражнения), хочется иметь возможность яваскриптом добавлять/удалять упражнения, менять их положение.
Для этого были использованы формсеты (django.forms.formsets) и jquery на клиенте.
В теории всё так: в шаблон передаём формы из формсета (подводный камень тут – для правильной валидации нужно в шаблоне внутри формы нужно не забыть вписать скрытые инпуты, отвечающие за количество форм формсета на странице, для этого пишем в шаблоне {{ exercisesFormset.management_form }}).
В шаблоне у каждого упражнения присутствуют контролы для удаления/добавления и перемещения упражнений, после загрузки страницы ненужные контролы у каждого упражнения скрываются, а после, к примеру, добавления нового упражнения контролы перерисовываются.
Для удаления все поля ввода упражнения очищаются, после чего скрываются.
Это была теория, теперь практика. Ниже гольный код с комментариями.
Continue reading »
Хотелось использовать стандартную авторизацию, но нужно было, естественно, её расширить.
Вот как это получилось.
Continue reading »
Достаточно в urls.py добавить:
(r'^static/(?P.*)$', 'django.views.static.serve', {'document_root': '/home/.../static'}),
Для боевого сервера этот метод, конечно, использовать не стоит, но для разработки – самое то.
Наткнулся в сети на интересную статью о том, как ограничить скорость скачивания файлов с сервера.
Код на Python (Django), но если язык не знаком, то в качестве алгоритма почитать тоже полезно.
Ссылка.