1
嗨#1人,Django的:model.save()是不節能,但沒有錯誤味精
我試圖寫在Django,我自己接觸的形式,用戶可以給我寫郵件,消息會通過電子郵件發送並保存在數據庫中進行跟蹤。
但不知何故,model.save()不會保存任何東西。當我使用管理員檢查條目時,聯繫人表格爲空。我也沒有收到任何錯誤消息。
該消息的發送尚未完全實施。
爲了測試代碼,我在if/else分支中設置了一些狀態消息,但是我沒有得到任何聲明 - 因此代碼似乎被忽略了。但我不明白爲什麼?有什麼建議麼?
我不知道我是否正確地在views.py和forms.py之間傳遞請求變量。這可能是問題嗎?
謝謝您的建議。
models.py
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from django.conf import settings
from django.core.urlresolvers import reverse
from django.core.mail import send_mail
import datetime, random
class Contact(models.Model):
"""
Contact class is the model for user messages.
Every message will be sent.
"""
CATEGORIES = (
('Suggestion', 'I have a suggestion'),
('Feedback', 'General feedback'),
('Complaint', 'You should improve ...'),
# ('', ''),
)
category = models.CharField(_('Message Category'),
max_length=10,
choices=CATEGORIES)
subject = models.CharField(_('Message Subject'),
max_length=255,)
sender = models.EmailField(_('Email Address'),)
message = models.TextField(_('Message Box'),)
# date and ansbwered are not visible to the user
timeOfMessage = models.DateTimeField(_('Time of sending'), blank=True, null=True)
answered = models.BooleanField(_('Answered?'),
default=False,)
def __unicode__(self):
return '%s' % self.sender
def send_and_save(self):
subject_new = ':'.join(self.category, self.subject)
send_mail(subject_new,
message,
sender,
'[email protected]_domain_address.com')
return True
forms.py
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from contact.models import Contact
import datetime
class ContactForm(ModelForm):
class Meta:
model = Contact
exclude = ('answered', 'timeOfMessage')
def save_and_email(request):
if request.method == 'POST':
form = self(request.POST)
if form.is_valid():
# contact.cleaned_data()
contact = form.save(commit=False)
contact.timeOfMessage = datetime.now()
contact.answered = False
contact.save()
print "was here"
return True
else:
print "Saving Failed"
else:
print "POST failed"
return False
views.py
from django.views.generic.simple import direct_to_template
from django.shortcuts import redirect, get_object_or_404, render_to_response
from django.utils.translation import ugettext as _
from django.http import HttpResponseForbidden, Http404, HttpResponseRedirect, HttpResponse
from django.template import RequestContext
from django.core.mail import BadHeaderError
from contact.forms import ContactForm
def contact(request):
if request.method == 'POST':
try:
contactform = ContactForm()
contactform.save_and_email
except BadHeaderError:
return HttpResponse(_('Invalid header found.'))
return HttpResponseRedirect('/contact/thankyou/')
return render_to_response('contact/contact.html', {'form': ContactForm()},
RequestContext(request))
謝謝你的回覆! – neurix