Arrasted 0 Denunciar post Postado Setembro 23, 2009 Bom dia pessoal, preciso renderizar um formulario dentro uma página através de um {% include 'contato.html'%}. Se fosse um "model" criaria um context_processor e persistia os dados, mas não é o caso. Aparentemente é algo muito simples, mas nao estou achando, o form não é renderizado. Visto que o fórum tem mais tópicos desde a última visita, vou deixar o fonte para quem quiser. /contato/ = form renderizado - template é contato.html / = nao renderiza - o template é index.html o include é no "/" template acima. Braços a todos urls.py from django.conf.urls.defaults import * from django.contrib import admin from django.conf import settings from django.views.generic.simple import direct_to_template admin.autodiscover() urlpatterns = patterns('', #administracao (r'^admin/', include(admin.site.urls)), #inicial (r'^$', 'dadalto.gerencia.views.index'), #contato (r'^contato/$', 'dadalto.gerencia.views.contato'), #media (r'^media/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), ) views.py #-*- coding: utf-8 -*- from django.shortcuts import render_to_response, get_object_or_404 from django.http import HttpResponse, HttpResponseRedirect from django.template import RequestContext from django import forms from django.core.mail import send_mail #import dos models from dadalto.gerencia.models import Categoria, Foto, Imagem from dadalto.gerencia.forms import * from django.views.generic.simple import direct_to_template def index(request): categorias = Categoria.objects.all().order_by('nome') return render_to_response( 'index.html', locals(), context_instance=RequestContext(request), ) # ****************************************************************************** def enviar(self): titulo = 'Mensagem enviada pelo Form' destino = 'ericolvr@gmail.com' texto = """ Nome: %(nome)s E-mail: %(email)s Mensagem: %(mensagem)s """ % self.cleaned_data send_mail( subject = titulo, message = texto, from_email = destino, recipient_list = [destino], ) def contato(request): if request.method == 'POST': form = FormContato(request.POST) if form.is_valid(): form.enviar() exibe = 'Mensagem enviada!' form = FormContato() else: form = FormContato() return direct_to_template(request, 'index.html', extra_context={'form':form}) forms.py # -*- coding:utf-8 -*- from django import forms class FormContato(forms.Form): nome = forms.CharField(max_length='30', required=True) email = forms.EmailField(label=u'E-mail', required=True) mensagem = forms.Field(widget=forms.Textarea) Compartilhar este post Link para o post Compartilhar em outros sites
Arrasted 0 Denunciar post Postado Setembro 24, 2009 Achei que tivesse postadot tudo, mas foi so metade hehe. models.py #-*- coding: utf-8 -*- from django.db import models from datetime import datetime from django.core.urlresolvers import reverse #SIGNALS from django.db.models import signals from django.template.defaultfilters import slugify class Categoria(models.Model): nome = models.CharField(max_length="50") slug = models.SlugField(max_length="50", blank=True) def __unicode__(self): return self.nome def get_absolute_url(self): return reverse('categoria', kwargs={'slug': self.slug}) def categoria_pre_save(signal, instance, sender, **kwargs): instance.slug = slugify (instance.nome) signals.pre_save.connect(categoria_pre_save, sender=Categoria) # ****************************************************************************** class Foto(models.Model): categoria= models.ForeignKey('Categoria') nome = models.CharField(max_length="50", help_text='Nome da foto', blank=False) descricao = models.TextField(verbose_name='Descrição', blank=True) fotop = models.ImageField( upload_to='images', null=True, blank=True, verbose_name='Foto pqna', ) fotog = models.ImageField( upload_to='images', null=True, blank=True, verbose_name='Foto gde', ) incluida_em = models.DateTimeField(default=datetime.now, blank=True) slug = models.SlugField(max_length='50', blank=True) def __unicode__(self): return self.nome def get_absolute_url(self): return reverse('foto', kwargs={'slug': self.slug}) def foto_pre_save(signal, instance, sender, **kwargs): instance.slug = slugify (instance.nome) signals.pre_save.connect(foto_pre_save, sender=Foto) # ****************************************************************************** class Imagem(models.Model): class Meta: verbose_name_plural = ('Imagens de capa') nome = models.CharField(max_length='50') incluida_em = models.DateTimeField(default=datetime.now, blank=True) imagemg = models.ImageField( upload_to='images', null=True, blank=True, verbose_name='Imagem gde', ) slug = models.SlugField(max_length='50', blank=True) def __unicode__(self): return self.nome def get_absolute_url(self): return reverse('imagem', kwargs={'slug': self.slug}) def imagem_pre_save(signal, instance, sender, **kwargs): instance.slug = slugify (instance.nome) signals.pre_save.connect(imagem_pre_save, sender=Imagem) # ****************************************************************************** JOB_CHOICES = ( ('01', 'Aniversário'), ('02', 'Book'), ('03', 'Casamento'), ('04', 'Evento'), ('05', 'Gastronomia'), ('06', 'Externa'), ) TIPO_CHOICES = ( ('01', 'Pessoa Física'), ('02', 'Pessoa Jurídica'), ) class Prospect(models.Model): tipo = models.CharField(max_length='50', choices=TIPO_CHOICES, verbose_name='Tipo cliente') nome = models.CharField(max_length='50') telefone = models.PositiveIntegerField(max_length='20', blank=True, help_text='Apenas números') celular = models.PositiveIntegerField(max_length='10', blank=True, help_text='Apenas números') email = models.EmailField(verbose_name='E-mail', blank=True) empresa = models.CharField(max_length='100', blank=True) tipo_foto = models.CharField(max_length='30', choices=JOB_CHOICES, verbose_name='Tipo de foto') dt = models.DateTimeField(default=datetime.now, blank=True,verbose_name='Cotado em') slug = models.SlugField(max_length='50', blank=True) previsto = models.DateTimeField(default=datetime.now, verbose_name='Previsto Para', blank=True) def __unicode__(self): return self.nome def get_absolute_url(self): return reverse('prospect', kwargs={'slug': self.slug}) def prospect_pre_save(signal, instance, sender, **kwargs): instance.slug = slugify (instance.nome) signals.pre_save.connect(prospect_pre_save, sender=Prospect) # ****************************************************************************** admin.py #-*- coding: utf-8 -*- from django.contrib import admin from dadalto.gerencia.models import Categoria, Foto, Imagem, Prospect class AdminCategoria(admin.ModelAdmin): list_display = ('nome',) list_filter = ('nome',) admin.site.register(Categoria, AdminCategoria) # ***************************************************** class AdminFoto(admin.ModelAdmin): list_display = ('categoria', 'nome',) list_filter = ('nome',) search_fileds = ('nome',) date_hierarchy = ('incluida_em') admin.site.register(Foto, AdminFoto) # ***************************************************** class AdminImagem(admin.ModelAdmin): list_display = ('nome',) list_filter = ('nome',) admin.site.register(Imagem, AdminImagem) # ***************************************************** class AdminProspect(admin.ModelAdmin): list_display = ('nome', 'tipo_foto', 'previsto',) list_filter = ('tipo',) search_fileds = ('nome',) date_hierarchy = ('previsto') admin.site.register(Prospect, AdminProspect) Compartilhar este post Link para o post Compartilhar em outros sites
Heigler 0 Denunciar post Postado Outubro 10, 2009 Meio atrasado, mas não custa responder. Bom, na verdade há um erro de conceito na sua aplicação. Você está incluindo um formulário que recebe um contexto com o form de uma view que não foi chamada, em outras palavras, o formulário não existe em index.html visto que você precisa acessar a url /contato/ para que ele seja instanciado. A maneira correta de se fazer isso é estender o template index.html em um form.html chamando um bloco pré-existente em index para renderizar seu formulário no local desejado. Dessa forma sua view de contato apontaria para o form.html Abraços, Compartilhar este post Link para o post Compartilhar em outros sites