首页 > 解决方案 > 使用 Django 将联系表发送到邮件 ID 和 PostgreSQL 数据库

问题描述

我想将联系表发送到电子邮件 ID 并将其保存到 postgresql 数据库。以下代码帮助我将其发送到邮件 ID,但无法将其保存在数据库中。谁能帮我解决这个问题,非常感谢

网址.py

from django.contrib import admin
from django.urls import path
from.import views

urlpatterns = [
    path('email/', views.email, name='email'),
    path('success/', views.success, name='success')

]

模型.py

from django.db import models
from django.forms import ModelForm


class Comment(models.Model):
    what_about = models.CharField(max_length=255)
    contact_email = models.EmailField(max_length=255)
    content = models.TextField()
    Name = models.CharField(max_length=255)
    Phone_Number = models.CharField(max_length=255)

    def __str__(self):  # __unicode__ on Python 2
        return self.what_about

表格.py

from django.forms import ModelForm
from django import forms
from .models import Comment


class MyCommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['what_about', 'content', 'contact_email', 'Name', 'Phone_Number']

视图.py

from django.shortcuts import render, redirect
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django import forms
from django.utils import timezone
from.forms import MyCommentForm

def email(request):

    if request.method == 'GET':
        form = MyCommentForm()
    else:
        form = MyCommentForm(request.POST)
        if form.is_valid():
            form.save()
            cd = form.cleaned_data
            subject = form.cleaned_data['what_about']
            from_email = form.cleaned_data['contact_email']
            message = 'contact_email: "{}"\n Phone_Number: "{}"\n Name: "{}"\n content: "{}"'.format(cd['contact_email'],
                                                                                                     cd['Phone_Number'],
                                                                                                     cd['Name'],
                                                                                                     cd['content'])
        try:

            send_mail(subject, message, from_email, ['prasanth@interloggg.net'])
        except BadHeaderError:
            return HttpResponse('Invalid header found.')
        return redirect('success')

    return render(request, "email.html", {'form': form})

def success(request):
    return HttpResponse('Success! Thank you for your message.')

标签: pythondjangopostgresql

解决方案


您需要在视图中导入模型并制作“Comment.save()”

您正在导入您的表单,但它不是您的数据库,请将其放在您认为最适合的那一刻,将每个答案保存到正确的列。


推荐阅读