django CreateView需要pk

时间:2015-06-09 15:23:00

标签: django django-views

这是我的CreateView:

class LampCreateView(CreateView):
    model = Lamp
    template_name = 'shotmaker/test_cam.html'
    success_url = '/shotmaker/'

及其网址:

url(r'^camera/create/$', views.LampCreateView.as_view(), name='lamp_create'),

当我尝试打开URL时,我得到了这个:

ValueError at /shotmaker/camera/create/
invalid literal for int() with base 10: 'create'

当我将pk传递到网址时:

url(r'^camera/create/(?P<pk>[-\w]+)$', views.LampCreateView.as_view(), name='lamp_create'),

视图打开确定。

如果这是一个CreateView,为什么需要一个pk? pk不应该存在!

1 个答案:

答案 0 :(得分:1)

如果您查看完整的回溯,您应该能够看到它不是引发异常的LampCreateView

听起来你在lamp_create之上有另一个匹配/shotmaker/camera/create/的网址模式。例如:

url(r'^camera/(?P<pk>[-\w]+)/$', views.OtherView.as_view(), name='other_view')
url(r'^camera/create/(?P<pk>[-\w]+)$', views.LampCreateView.as_view(), name='lamp_create'),

要解决此问题,请将other_view网址移至lamp_create网址下方。