Сайт имеет одну страничку, то бишь одно представление. Оно генерирует хтмл шаблон с формой, данные с которой должны отправляться в это же представление для обработки и пересоздания странички. Для работы формы
я закоментировал в настройках проекта 'django.middleware.csrf.CsrfViewMiddleware', в MIDDLEWARE_CLASSES
Класс объекта
#запись блога
class BlogEntry(models.Model):
#заголовок
title = models.CharField(max_length=100)
#содержание
text = models.CharField(max_length=3500)
#дата создания
pub_date = models.DateTimeField(auto_now_add=True,blank=False)
Класс представления
def main(request):
t = get_template('main.html')
#если есть ответ от формы, то будет создание нового блога и передача всех блогов
if request.method == 'POST':
n = BlogEntry(request.POST['title'],request.POST['message'],datetime.datetime.now() )
n.save()
m = BlogEntry.objects.all()
html = t.render(Context({"typeOtv":"newBlog","mess":"Поздравляю! Вы создали блог.","allBlogs":m}))
#если нет
else:
m = BlogEntry.objects.all()
#если есть блоги, то они будут переданы(без сообщения)
if m:
html = t.render(Context({"typeOtv":"blogNot","allBlogs":m}))
#иначе просто сообщение о неудаче
else:
html = t.render(Context({"typeOtv":"blogNot","mess":"Блоков пока нет."}))
return HttpResponse(html)
Форма, передающая значения в html
<!-- форма создания блога -->
<form id = "formBlog" action="" method="post">
<p>Заголовок: <input type="text" name="title"></p>
<p>Содержание: <textarea name="message" rows="10" cols="50"></textarea></p>
<input type="submit" value="Создать блог">
</form>
Ошибки следующие:
1)Если ввожу в поля формы русские символы, пишет
'decimal' codec can't encode characters in position 0-2: invalid decimal Unicode string
2)Если английские, пишет
invalid literal for int() with base 10: 'cv'
3)Если числа, то
blogTest_blogentry.pub_date may not be NULL
Updated 7 May 2014, 18:15 by kiro241.