数据不会使用基于分类的视图从 Django 表单提交到数据库
Data doesn't get submitted to database from Django forms using classed based views
我正在尝试为公司创建一个注册页面,整个流程在 Django 中使用 froms 时运行良好。虽然当我用数据填写表格并点击提交时,它会将我重定向到我的索引页面并且没有显示任何错误。但是当我检查 /admin 中的数据库时, object/data 没有提交。知道“错误”是什么吗?
我正在使用基于 class 的视图,并且我已经在 admin.py
中添加了我的模型
admin.site.register(Company)
我的 urls.py 路径如下所示:
path('createCompanyProfile/', CompanyFormView.as_view(), name = "createCompanyProfile"),
models.py:
class Company(models.Model):
companyName = models.CharField(max_length = 145)
description = models.TextField()
websiteURL = models.CharField(max_length = 100)
relationToDjango = models.TextField()
phoneNumber = models.CharField(max_length = 11)
email = models.CharField(max_length = 100)
mainContact = models.CharField(max_length = 50)
streetName = models.CharField(max_length = 45)
houseNumber = models.CharField(max_length = 25)
postalCode = models.CharField(max_length = 4)
region = models.CharField(max_length = 45)
def __str__(self):
return '{} {} {} {} {} {} {} {} {} {} {}'.format(self.companyName, self.description, self.websiteURL, self.relationToDjango, self.phoneNumber, self.email, self.mainContact, self.streetName, self.houseNumber, self.postalCode, self.region)
class CompanyForm(ModelForm):
class Meta:
model = Company
fields = '__all__'
views.py:
class CompanyFormView(FormView):
model = Company
template_name = "company/createCompanyProfile.html"
form_class = CompanyForm
success_url = '/'
def form_valid(self, form):
return super(CompanyFormView, self).form_valid(form)
createCompanyProfile.html
<form method="POST">
{% csrf_token %}
{{ form.as_p}}
<input type="submit" value="Create Profile">
</form>
您使用的 FormView
在提交的表单有效时不执行任何操作,因为它的设计思想是您将编写代码以在表单有效时执行操作(你没有)。因为你想用这个视图创建一个对象,所以你最好使用 CreateView
[Django docs]:
from django.views.generic.edit import CreateView
class CompanyFormView(CreateView):
model = Company
template_name = "company/createCompanyProfile.html"
form_class = CompanyForm
success_url = '/'
views.py 文件中存在问题。您正在使用窗体视图。使用CreateView将数据保存到DB。
# import
from django.views.generic.edit import CreateView
#yor class
class CompanyFormView(CreateView):
model = Company
template_name = "company/createCompanyProfile.html"
form_class = CompanyForm
success_url = '/'
我正在尝试为公司创建一个注册页面,整个流程在 Django 中使用 froms 时运行良好。虽然当我用数据填写表格并点击提交时,它会将我重定向到我的索引页面并且没有显示任何错误。但是当我检查 /admin 中的数据库时, object/data 没有提交。知道“错误”是什么吗?
我正在使用基于 class 的视图,并且我已经在 admin.py
中添加了我的模型admin.site.register(Company)
我的 urls.py 路径如下所示:
path('createCompanyProfile/', CompanyFormView.as_view(), name = "createCompanyProfile"),
models.py:
class Company(models.Model):
companyName = models.CharField(max_length = 145)
description = models.TextField()
websiteURL = models.CharField(max_length = 100)
relationToDjango = models.TextField()
phoneNumber = models.CharField(max_length = 11)
email = models.CharField(max_length = 100)
mainContact = models.CharField(max_length = 50)
streetName = models.CharField(max_length = 45)
houseNumber = models.CharField(max_length = 25)
postalCode = models.CharField(max_length = 4)
region = models.CharField(max_length = 45)
def __str__(self):
return '{} {} {} {} {} {} {} {} {} {} {}'.format(self.companyName, self.description, self.websiteURL, self.relationToDjango, self.phoneNumber, self.email, self.mainContact, self.streetName, self.houseNumber, self.postalCode, self.region)
class CompanyForm(ModelForm):
class Meta:
model = Company
fields = '__all__'
views.py:
class CompanyFormView(FormView):
model = Company
template_name = "company/createCompanyProfile.html"
form_class = CompanyForm
success_url = '/'
def form_valid(self, form):
return super(CompanyFormView, self).form_valid(form)
createCompanyProfile.html
<form method="POST">
{% csrf_token %}
{{ form.as_p}}
<input type="submit" value="Create Profile">
</form>
您使用的 FormView
在提交的表单有效时不执行任何操作,因为它的设计思想是您将编写代码以在表单有效时执行操作(你没有)。因为你想用这个视图创建一个对象,所以你最好使用 CreateView
[Django docs]:
from django.views.generic.edit import CreateView
class CompanyFormView(CreateView):
model = Company
template_name = "company/createCompanyProfile.html"
form_class = CompanyForm
success_url = '/'
views.py 文件中存在问题。您正在使用窗体视图。使用CreateView将数据保存到DB。
# import
from django.views.generic.edit import CreateView
#yor class
class CompanyFormView(CreateView):
model = Company
template_name = "company/createCompanyProfile.html"
form_class = CompanyForm
success_url = '/'