当我运行 django 项目时,从 django 中的 CreateView 继承的通用视图不显示要填写的模型字段

问题描述 投票:0回答:1

我在 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 对象?

python django django-models django-class-based-views django-generic-views
1个回答
0
投票

您放置了一个空的 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'],
         .
         .
         .
© www.soinside.com 2019 - 2024. All rights reserved.