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

新手上路,请多包涵

我收到一个错误,我不确定这意味着什么:

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'})),
               ]

我究竟做错了什么?

先感谢您!

原文由 Xhens 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 900
2 个回答

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

 EmployeeTemplateView.as_view(emp='employees')

原文由 Daniel Roseman 发布,翻译遵循 CC BY-SA 3.0 许可协议

确保你这样放置“as_view()”。不是“as_view”。我犯了这么大的错误

原文由 felix 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题