我在 django 中创建一个名为“sampleapp”的应用程序,然后在 models.py 中定义我的模型,如下所示:
from django.db import models
from django.urls import reverse
class Employee(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
mobile = models.CharField(max_length=10)
email = models.EmailField()
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
也在 forms.py 中:
from .models import Employee
from django import forms
class EmployeeForm(forms.ModelForm):
class Meta:
# To specify the model to be used to create form
model = Employee
# It includes all the fields of model
fields = '__all__'
然后在views.py中:
from django.shortcuts import render
from .models import Employee
from .forms import EmployeeForm
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
class EmployeeCreate(CreateView):
model = Employee
fields = '__all__'
在 urls.py 文件中:
from django.urls import path
from .views import EmployeeCreate
urlpatterns = [
path('', EmployeeCreate.as_view(), name='EmployeeCreate')
]
我还将employee_form.html(一个空的html文件)放在“myproject/template/sampleapp/employee_form.html”中。 但是当我运行我的项目并转到 url“http://127.0.0.1:8000/”时,我收到一个空的 html 文件,一个没有任何字段需要填写的页面(如first_name字段last_name字段等)。 如何使用 django 通用视图“CreateView”创建 Employee 对象?
您放置了一个空的 html 文件。你可以做到这一点 -
<form method="POST" enctype="multipart/form-data">
<!-- Security token -->
{% csrf_token %}
<!-- Using the formset -->
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
您还可以输入自定义 html 文件名 -
class EmployeeCreate(CreateView):
model = Employee
fields = '__all__'
#coustom html file name
template_name = 'sampleapp/employee_form.html'
还要检查 settings.py 文件中的 'DIRS': ['templates'] 。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['templates'],
.
.
.