Python 使用ModelForm的Django联系人表单
我正在尝试创建一个联系人表单,该表单将发送电子邮件并存储消息。我想我把model.py、forms.py和admin.py都做对了,我能够创建和存储管理员发来的消息(不是电子邮件)。但是我正在努力使用view.py,它必须同时发送电子邮件和存储消息 model.py:Python 使用ModelForm的Django联系人表单,python,django,view,modelform,Python,Django,View,Modelform,我正在尝试创建一个联系人表单,该表单将发送电子邮件并存储消息。我想我把model.py、forms.py和admin.py都做对了,我能够创建和存储管理员发来的消息(不是电子邮件)。但是我正在努力使用view.py,它必须同时发送电子邮件和存储消息 model.py: from django.db import models from django.contrib import admin class Contact(models.Model): name = models.CharF
from django.db import models
from django.contrib import admin
class Contact(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
message = models.TextField(max_length=10)
date_created = models.DateField(verbose_name="Created on date", auto_now_add="True")
class ContactAdmin(admin.ModelAdmin):
list_display = ('name', 'email', 'message', 'date_created')
from django import forms
from .models import Contact
class ContactForm(forms.Form):
name = forms.CharField()
email = forms.EmailField()
forms.py:
from django.db import models
from django.contrib import admin
class Contact(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
message = models.TextField(max_length=10)
date_created = models.DateField(verbose_name="Created on date", auto_now_add="True")
class ContactAdmin(admin.ModelAdmin):
list_display = ('name', 'email', 'message', 'date_created')
from django import forms
from .models import Contact
class ContactForm(forms.Form):
name = forms.CharField()
email = forms.EmailField()
关于views.py,我需要一些指导,以便为def联系人(请求)整理代码:
。我想我必须包括这些模块:
from django.conf import settings
from django.shortcuts import render, HttpResponseRedirect, HttpResponse, Http404
from django.core.mail import send_mail
from .forms import ContactForm
from .models import Contact
谈到模板部分,我不确定如何使用模板标记以html格式呈现联系人表单
因此,我需要帮助找出正确的视图和模板代码。。当然,我对其余代码的建议也持开放态度——正如您可能猜到的,这是我第一个真正的Django应用程序
谢谢大家! 类似这样:
我将使用django ModelForm生成表单:
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
exclude = ('date_created', )
文件:
和FormView用于实际视图:
from django.conf import settings
from django.core.mail import send_mail
from django.views.generic import FormView
from .forms import ContactForm
class ContactFormView(FormView):
form_class = ContactForm
template_name = "email_form.html"
success_url = '/email-sent/'
def form_valid(self, form):
message = "{name} / {email} said: ".format(
name=form.cleaned_data.get('name'),
email=form.cleaned_data.get('email'))
message += "\n\n{0}".format(form.cleaned_data.get('message'))
send_mail(
subject=form.cleaned_data.get('subject').strip(),
message=message,
from_email='contact-form@myapp.com',
recipient_list=[settings.LIST_OF_EMAIL_RECIPIENTS],
)
form.save()
return super(ContactFormView, self).form_valid(form)
文件:
以及您的模板:
{% extends 'base.html' %}
{% block title %}Send an email{% endblock %}
{% block content %}
<div class="row">
<div class="span6">
<h1>Send an email</h1>
<form action="." method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
</div>
</div>
{% endblock %}
{% block extrajs %}
<script src="{{ STATIC_URL }}js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(function() {
$('#id_name').focus()
});
</script>
{% endblock %}
{%extends'base.html%}
{%block title%}发送电子邮件{%endblock%}
{%block content%}
发送电子邮件
{%csrf_令牌%}
{{form}}
{%endblock%}
{%block extrajs%}
$(函数(){
$('#id_name')。焦点()
});
{%endblock%}
文件: