python - 在 Django 中保存表单数据

标签 python django forms

我正在尝试在 Django 中设置一个表单并将数据保存到我的数据库中,而不使用 ModelForm。我的表单正在工作,但我坚持的部分是如何处理表单数据并将其保存在 View 中。如您所见,在“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('/')
        ....

请注意,如果字段值不遵循约束,则保存对象可能会失败。所以你需要注意这一点。

关于python - 在 Django 中保存表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32423401/

相关文章:

python - psycopg creata 数据库失败,语法错误

python - Django View ,其中列从另一个表引用为外部列

python - 如何删除 Django 中的 X 框架选项 header ?

Django 查询集 : Exclude list of emails using endswith

javascript - 如何在codeigniter中提交表单后获取成功消息

python - Pandas 在 bool 索引中使用行标签

python - matplotlib.image.NonUniformImage 在 pdf 导出期间超出绘图区域

javascript - 发布 [object%20HTMLInputElement] 404 在 $.ajax 提交上找不到

Python 请求奇怪的 URL %-编码

mysql - 使用 mysql 数据库中的文件名填充表单