在Django中,如何使用基于函数的视图实现CreateView的函数?

时间:2019-03-18 16:00:10

标签: python django

这是基于类的视图代码:

# views.py
class ObjectCreate(CreateView):
    model = ObjectModel
    fields = "__all__"

使用此类很容易创建对象并保存它。

我想知道如何?

如果我想使用基于函数的视图来实现它怎么办?

2 个答案:

答案 0 :(得分:1)

使用功能视图,您需要实现所有功能,包括创建form for your model

def create_object(request):
    if request.method == 'GET':
        form = ObjectForm()

    if request.method == 'POST':
        form = ObjectForm(request.POST)
        if form.is_valid():
            instance = form.save()  # instance created
            # now redirect user or render a success template
            return redirect(...)

    # if request method is GET or form is invalid return the form
    return render(request, 'path/template_name.html', {'form': form})

答案 1 :(得分:1)

如果您想了解CreateView的工作原理,请查看其源代码。或者,为了更简单地了解结构,请查看this site,其中列出了所有Django CBV。

您会发现CreateView继承自其他9个类,具有大约20个属性(其中modelfields)和24个可以重写以自定义其行为的方法。