Форма обратной связи Django 1.4

категория: Django
Теперь пришло время создать для своего блога форму для обратной связи, хотя я сомневаюсь, что многие ей будут пользоваться, так как хватает социальных сетей, isq, skipe, я больше всего пользуюсь gmail. Вариантов было много для реализации задуманного, но я решил пока не заморачиваться с AJAX, а написать простую форму обратной связи с минимальными потребностями. Использовал для этого class ModelForm (https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/). Пишем нашу модель:
from django.forms import ModelForm # импорт ModelForm
class Contact(models.Model): # тема, имя отправителя, мэйл, и само сообщение
	subject = models.CharField(max_length=100, verbose_name=u'Тема:')
	name = models.CharField(max_length=100, verbose_name=u'ФИО:')
	mail = models.EmailField(verbose_name=u'Mail:')
	text = models.TextField(verbose_name=u'Тект:')
    class Meta: # много красивых имен для админки
        verbose_name = ('Contact')
        verbose_name_plural = ('Contacts')
    def __unicode__(self): # поиск в админке по "теме"
        return self.subject
class ContactForm(ModelForm): # собственно наша форма
	class Meta:
		model = Contact
		widgets = {
                # я подгонял размер текстового поля под свой шаблон
		'text': Textarea(attrs={'cols': 65, 'rows': 10,}), 
		}
Дальше пишем представление:
def manage_contact(request): # наша вьюшка
    all_is_right = ''
    if request.method == 'POST': # пару проверок формы
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save() # сохраняем нашу форму в базу
            all_is_right = "Ваше сообщение успешно отправлено."
            form = ContactForm() # очищаем форму
    else:
        form = ContactForm()
    return render(request, 'contacts.html', {
        'form': form,
        'all_is_right': all_is_right,
        })
Дальше пишем наш шаблон:
{% extends "base.html" %}
{% block title %}Контакты{% endblock title %}
{% block content %}
<div class="contacts">
	<h2>Форма для отправки сообщения</h2>
        #выводим наше сообщение, что все прошло успешно
	<h3>{% if all_is_right %}{{ all_is_right }}{% endif %}</h3>
	<form method="post" action="">
		<table>
			{{ form }} # выводим форму в виде таблицы
		</table><br>
		<center><input type="submit" value="Отправить"></center>
	</form>
</div>	
{% endblock content %}
Ну а теперь, радуемся проделаной работе)) В дальнейшем я думаю к форме буду возвращаться - прикреплю капчу и, наверное, реализую с помощью AJAX.


blog comments powered by Disqus