Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
long_description = open('README.rst').read() + open('CHANGES.rst').read()
def project_edit(request, slug):
project = get_object_or_404(Project, slug=slug)
form = ProjectEditingForm(request.POST or None, instance=project)
if form.is_valid():
project = form.save()
return redirect(project)
return direct_to_template('projects/edit.html', {
'project': project,
'form': form
})
class ProjectEditingForm(forms.ModelForm):
class Meta:
model = Project
...field.queryset=SomeModel.objects.none()...field.queryset=SomeModel.objects.all()форма берет все данные из модели и сразу считает себя валидной
form = MyForm(request.POST or None, initial = {'qwe': 'asd', 'foo': 'bar'})
if form.is_valid():
form.save()
return redirect( ... )
return direct_to_template( ... )
Если после этого сразу непонятно, как работает код ContactForm(request.POST or None), то разберитесь в качестве упражнения, расписывать не буду. Это простая и полезная идиома.
В документации и обучающих примерах по django обычно пишут вьюхи вот так
автоэкранирование в шаблонах, например.
# первая попавшаяся под руку хрень -)
$ curl -svX PUT msdn.microsoft.com/ru-ru/default.aspx > /dev/null
(HTTP/1.1 411 Length Required)
# django
$ curl -svX PUT docs.djangoproject.com/en/1.2/ > /dev/null
(HTTP/1.0 200 OK)
@render_to('contact.html')
def contact(request):
form = ContactForm(request.POST or None)
if form.is_valid():
# обрабатываем данные. Например, делаем form.save()
# ...
return redirect('url_name', param1=value)
return {'form': form}
Ограничений по количеству обращений у google charts image api нет, там просят только связаться с ними, если > 200тыс обращений в день будет, чтобы они нагрузку распределили. Так что такие графики можно не только в админке использовать.
Сумбурные заметки про python и django