加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在Django中保存表单数据

发布时间:2020-12-20 12:09:03 所属栏目:Python 来源:网络整理
导读:我正在尝试在Django中设置一个表单并将数据保存到我的数据库,而不使用ModelForm.我的表单正在运行,但我坚持的部分是如何处理表单数据并将其保存在视图中.正如你所看到的,在’if form.is_valid()之后:’我陷入了困境,无法想到正确的代码. # models.pyfrom dj
我正在尝试在Django中设置一个表单并将数据保存到我的数据库,而不使用ModelForm.我的表单正在运行,但我坚持的部分是如何处理表单数据并将其保存在视图中.正如你所看到的,在’if form.is_valid()之后:’我陷入了困境,无法想到正确的代码.

# models.py

from django.db import models

class Listing(models.Model):
    business_name = models.CharField(max_length=80)
    business_email = models.EmailField()
    business_website = models.CharField(max_length=80)
    business_phone = models.CharField(max_length=80)

# forms.py

from django import forms

class NewBusinessForm(forms.Form):
    business_name = forms.CharField(label='Business Name',max_length=100)
    business_phone = forms.CharField(label='Phone Number',max_length=100)
    business_email = forms.EmailField(label='Email Address',max_length=100)
    business_website = forms.CharField(label='Web Site',max_length=100)

# views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import NewBusinessForm

def new_business(request):
    if request.method == 'POST':
        form = NewBusinessForm(request.POST)
        if form.is_valid():
            # process form data
            return HttpResponseRedirect('/')

    else:
        form = NewBusinessForm()

    return render(request,'directory/new.html',{'form': form})

解决方法

您需要创建对象并手动设置所有字段.这是一个例子.

def new_business(request):
    if request.method == 'POST':
        form = NewBusinessForm(request.POST)
        if form.is_valid():
            # process form data
            obj = Listing() #gets new object
            obj.business_name = form.cleaned_data['business_name']
            obj.business_email = form.cleaned_data['business_email']
            obj.business_phone = form.cleaned_data['business_phone']
            obj.business_website = form.cleaned_data['business_website']
            #finally save the object in db
            obj.save()
            return HttpResponseRedirect('/')
        ....

请注意,如果字段值不遵循约束,则保存对象可能会失败.所以你需要照顾它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读