如何在django中创建方法视图?

如何在django中创建方法视图?,django,Django,我有以下代码: class StoryViewClass(ListView): ... some listview methods here for one set of urls def saveStory(self,request,context_object_name, template_name, success_template): if request.method == "POST": form =

我有以下代码:

class StoryViewClass(ListView):

... some listview methods here for one set of urls

def saveStory(self,request,context_object_name,
              template_name,
              success_template):
    if request.method == "POST":
        form = StoryForm(request.POST)
        form.user = request.user.id
        if form.is_valid():
            form.save()
            if (success_template):
                return render_to_response(success_template)
            else:
                return render_to_response('accounts/addStorySuccess.html')
    else:
        form = StoryForm()
    if (context_object_name):
        contextName = context_object_name
    else:
        contextName = 'form'
    if (template_name):
        return render_to_response(template_name,{contextName:form})
    else :
        return render_to_response('accounts/addStory.html',{contextName:form})
(这本身就很糟糕,以后再详细介绍)

我如何从我的url中调用它

我目前正在尝试:

url(r'^addStory/$',
    StoryShowView.saveStory(
        context_object_name='form',
        template_name='accounts/addStory.html',
        success_template='accounts/addStorySuccess.html'
    )
),
但是django抱怨说

unbound method saveStory() must be called with StoryShowView instance as first argument (got nothing instead)

Request Method:     POST
我的问题是:

  • 如何从url.py调用此方法(作为类的方法)
  • 有没有一种更简单的方法使方法“动态”或者你有什么-我的意思是,我不需要所有那些丑陋的“如果”块来检查已经设置了什么,如果必要的话默认设置了什么

  • 这不是使用Django基于类的视图的方式。必须通过
    as\u view()
    方法从url.py引用这些内容。它们并不意味着每个类都有一个以上的视图呈现方法——如果您需要,最好将公共代码放在基类中并将其子类化。但在您的情况下,您可能只想更多地使用现有的方法—例如,为了确定要渲染的模板,您应该覆盖
    get\u template\u names()

    Ah。如果它们不需要有多个视图渲染方法,那么将它们划分为类又有什么意义呢?并不是说我不同意你的观点-我接受它-我只是不理解这个决定背后的理念。因为你可以将它们分类。嗯。好吧,既然我可以对它们进行子类化,那么就没有理由让一个类(ClassA)显示故事列表并准备一个表单添加到故事中,而让一个ClassA的子类(ClassB)处理ClassA中定义的表单提交,对吗?因为子类化没有什么好处?也就是说,我可能有ClassA和ClassC,其中ClassC不是ClassA的子类?