Python 基于django类的视图获取上下文数据获取意外的关键字参数
我试图从基于django类的视图中创建一个CRUD应用程序。 这是我更新/创建注释的视图Python 基于django类的视图获取上下文数据获取意外的关键字参数,python,django,django-forms,django-class-based-views,Python,Django,Django Forms,Django Class Based Views,我试图从基于django类的视图中创建一个CRUD应用程序。 这是我更新/创建注释的视图 class CreateNoteView(CreateView): model = Note template_name = 'edit_note.html' def get_success_url(self): return reverse('notes-list') def get_context_data(self): conte
class CreateNoteView(CreateView):
model = Note
template_name = 'edit_note.html'
def get_success_url(self):
return reverse('notes-list')
def get_context_data(self):
context = super(CreateNoteView, self).get_context_data(**kwargs)
context['action'] = reverse('notes-create')
return context
class UpdateNoteView(UpdateView):
model = Note
template_name = 'edit_note.html'
def get_success_url(self):
return reverse('notes-list')
def get_context_data(self, **kwargs):
context = super(UpdateNoteView, self).get_context_data(**kwargs)
context['action'] = reverse('notes-edit',
kwargs={'pk':self.get_object().id})
return context
这是我的模型文件:
# Create your models here.
class Note(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
pub_date = models.DateField(auto_now_add=True)
我的URL文件如下所示:
urlpatterns = patterns('',
url(r'^create/$',CreateNoteView.as_view(), name='notes-create',),
url(r'^$', ListNoteView.as_view(), name='notes-list',),
url(r'^edit/(?P<pk>\d+)/$', UpdateNoteView.as_view(), name='notes-edit',),
)
检查CreateNoteView.get_context_数据函数签名-/create/映射到URL中的CreateNoteView.py检查CreateNoteView.get_context_数据函数签名-/create/映射到URL中的CreateNoteView.py更新
def get_context_data(self):
在CreateNoteView
中:
def get_context_data(self, **kwargs):
重写方法时(在本例中:
get\u context\u data
),应确保尽可能保留相同的签名:在本例中,get\u context\u data
预计将接收self,**kwargs
关于你的评论:
class NoteMixin(object):
model = Note
template_name = 'edit_note.html'
def get_success_url(self):
return reverse('notes-list')
def get_context_data(self, **kwargs):
context = super(NoteMixin, self).get_context_data(**kwargs)
context['action'] = self.get_action()
return context
class UpdateNoteView(NoteMixin, UpdateView):
def get_action(self):
return reverse('notes-edit', kwargs={'pk':self.get_object().id})
class CreateNoteView(NoteMixin, CreateView):
def get_action(self):
return reverse('notes-create')
更新
def get_context_data(self):
在CreateNoteView
中:
def get_context_data(self, **kwargs):
重写方法时(在本例中:
get\u context\u data
),应确保尽可能保留相同的签名:在本例中,get\u context\u data
预计将接收self,**kwargs
关于你的评论:
class NoteMixin(object):
model = Note
template_name = 'edit_note.html'
def get_success_url(self):
return reverse('notes-list')
def get_context_data(self, **kwargs):
context = super(NoteMixin, self).get_context_data(**kwargs)
context['action'] = self.get_action()
return context
class UpdateNoteView(NoteMixin, UpdateView):
def get_action(self):
return reverse('notes-edit', kwargs={'pk':self.get_object().id})
class CreateNoteView(NoteMixin, CreateView):
def get_action(self):
return reverse('notes-create')
你能给我们看一下
CreateNoteView
的代码吗?很可能您正在重新定义那里的get\u context\u data
,并且没有**kwargs
参数。您可以向我们展示CreateNoteView
的代码吗?很可能您正在重新定义那里的get\u context\u data
,并且没有**kwargs
参数。这个问题有点相切,但您能否告诉我如何从基类继承CreateNoteView
和UpdateNoteView
,为了防止重复?这样做会给我一个错误-AttributeError:Generic detail view CreateNoteView必须使用对象pk或slug调用。
我认为出现问题的原因是,CreateNoteView
是从CreateView
继承的,而UpdateNoteView
是从UpdateView
继承的,因此NoteMixin
不应该从UpdateView
继承,如果不是UpdateView,那么它应该从哪里继承?@user1629366是的,对不起,NoteMixin
应仅从对象继承。糟糕,糟糕的复制粘贴@谢谢你的编辑。确实有一个错误。不知道为什么会被拒绝。这个问题有点无关紧要,但是你能告诉我如何从基类继承CreateNoteView
和UpdateNoteView
,为了防止重复?这样做会给我一个错误-AttributeError:Generic detail view CreateNoteView必须使用对象pk或slug调用。
我认为出现问题的原因是,CreateNoteView
是从CreateView
继承的,而UpdateNoteView
是从UpdateView
继承的,因此NoteMixin
不应该从UpdateView
继承,如果不是UpdateView,那么它应该从哪里继承?@user1629366是的,对不起,NoteMixin
应仅从对象继承。糟糕,糟糕的复制粘贴@谢谢你的编辑。确实有一个错误。不知道为什么会被拒绝。