【问题标题】:How to save user input in database from django form如何从 django 表单将用户输入保存在数据库中
【发布时间】:2021-01-01 06:03:59
【问题描述】:

我在 django 中创建了一个小项目,在那里我创建了一个表单,现在我想要 3 个字段,如果用户输入他的姓名、电子邮件和邀请消息,那么它应该保存在数据库中。

我无法将数据保存在数据库中。

form.py

from datetime import datetime
from bootstrap_datepicker_plus import DatePickerInput
from django.contrib.admin.widgets import AdminDateWidget
from bootstrap_datepicker_plus import DateTimePickerInput
from bootstrap_datepicker_plus import TimePickerInput

# from .models import check


class Email_app(forms.Form):
    Name = forms.CharField()
    Email = forms.EmailField()
    Invite = forms.CharField()
    start_date = forms.DateField(label="Start_Date", widget=DatePickerInput())
    start_time = forms.DateField(label="Start_Time", widget=TimePickerInput())
    end_date = forms.DateField(label="End_Date", widget=DatePickerInput())
    end_time = forms.DateField(label="End_Time", widget=TimePickerInput()) 
    
    
    def __str__(self):
        return self.Name

表格 > enter image description here

下面是view.py

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import  formatdate
# from email import encoders
from email.encoders import encode_base64
import os,datetime
COMMASPACE = ', '
# from django.shortcuts import render

# Create your views here.
from django.shortcuts import render
from operators.settings import EMAIL_HOST_USER
from . import forms
from django.core.mail import send_mail
# Create your views here.
#DataFlair #Send Email
def email_app(request):
    sub = forms.Email_app()
    if request.method == 'POST':
        sub = forms.Email_app(request.POST)
        subject = 'Welcome to Email Event'
        message = 'Hope you are enjoying your Django'
        recepient = str(sub['Email'].value())
        invite = str(sub['Invite'].value())
        start_date = str(sub['start_date'].value())
        start_time = str(sub['start_time'].value())
        end_date = str(sub['end_date'].value())
        end_time = str(sub['end_time'].value())
        send_mail(subject, 
            message, EMAIL_HOST_USER, [recepient], fail_silently = False)
        print(start_date)
        print(end_date)
        send_mail1(recepient,invite)
        return render(request, 'Email_app/success.html', {'recepient': recepient})
    return render(request, 'Email_app/index.html', {'form':sub})

我也在 view.py 中接受输入,但我需要帮助才能将来自用户的相同输入保存到数据库中。 虽然很容易从 model.py 中保存,但我正在处理表单。 那么有什么方法可以将 form.py 中的输入保存到数据库中。

【问题讨论】:

    标签: python django


    【解决方案1】:

    我现在假设你应该已经想出了一个解决方案,但无论如何......

    由于您已经定义了form.py,因此为了保存到您的数据库中,您只需要在您的视图中调用form.save()

    在你的views.py

    def email_app(request):
        if request.method == 'POST':
           form = Email_app(request.POST)
           # Do Something
           form.save() #<-- saving the form to the database
           return render(request, 'Email_app/success.html', {'recepient': recepient})
    
        else:
          form = Email_app()
        return render(request, 'Email_app/success.html', {'recepient': recepient})
    

    我建议您将表单命名为:EmailForm(),以避免代码中出现任何冲突和不必要的错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 2020-09-15
      • 2018-05-16
      • 1970-01-01
      • 2021-09-15
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多