TypeError:as_view()接受1个位置参数,但给出了2个

2024-05-09 06:45:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个错误,我不知道它是什么意思:

TypeError at / as_view() takes 1 positional argument but 2 were given

from django.db import models
from django.contrib.auth.models import User
from django.contrib import admin

class Employee(models.Model):
    user = models.OneToOneField(User)
    full_name = models.CharField(max_length=50)
    phone_number = models.CharField(max_length=12)
    company = models.CharField(max_length=100)
    department = models.CharField(max_length=50)
    occupation = models.CharField(max_length=50)

    class Meta:
        verbose_name_plural = 'employees'

admin.site.register(Employee)

视图.py

from django.views.generic import TemplateView
from web_app.models import Employee

class EmployeeTemplateView(TemplateView):
    model = Employee.objects.all()
    template_name = 'index.html'
    context_object_name = 'employee_view'

网址.py

from django.conf.urls import url, include
from web_app import routers
from django.contrib import admin
from . import views
from web_app.views import EmployeeTemplateView
admin.autodiscover()

router = routers.DefaultRouter()
router.register(r'employee', views.EmployeeTemplateView, "Employee")

urlpatterns = ['',
               url(r'^$', EmployeeTemplateView.as_view({'emp' : 'employees'})),
               ]

我做错什么了?

提前谢谢你!


Tags: djangonamefromimportviewadminmodelsemployee
3条回答

请确保将“as_view()”这样放置。不是“如你所见”。我犯了个大错

因为看起来您只是试图将employees变量从视图传递到模板,所以您可以这样发送它:

视图.py

from django.views.generic import ListView
from web_app.models import Employee

class EmployeeListView(ListView):
    model = Employee
    template_name = 'index.html'
    context_object_name = 'employees'

url.py

urlpatterns = [
               url(r'^$', EmployeeListView.as_view(), name="employees"),
               ]

然后可以在模板中使用context_object_name,如下所示:

index.html

<div>{% for employee in employees %} {{ employee }} {% endfor %}</div>

as_view不接受位置参数,而是接受关键字参数。

EmployeeTemplateView.as_view(emp='employees')

相关问题 更多 >