将一个复合视图函数转换为两个视图函数

时间:2011-06-13 04:21:03

标签: django django-views

如何将以下视图功能分为两部分:一部用于Add操作,另一部用于Delete操作。

# in urls.py
urlpatterns += patterns('myproject.views',
url(r'^profile/edit/education/$', 'edit_education', name='edit_education'),)

# in views.py
@login_required
def edit_education(request):
    if request.method == 'POST':
        if 'Delete' in request.POST.values():
            profile.educations.remove(Education.objects.get(id=education_id))
            return redirect('edit_education')
        if 'Add School' in request.POST.values():
            form = EducationForm(request.POST)
            if form.is_valid() and request.POST['school']:
                form.save()
                return redirect('edit_education')
   else:
       form = EducationForm()
   return render_to_response('userprofile/edit_education.html', {'form': form}, context_instance=RequestContext(request))

我需要在这两个文件中进行哪些更改才能将视图分解为两个单独的函数?谢谢。

1 个答案:

答案 0 :(得分:1)

你为什么要这样做?该代码很好 - 紧凑且不言自明。

拆分它不仅需要更改视图,还需要(显然)更改表单模板,以便delete发布与add不同的地方。没有简单的方法可以做到这一点,除了有两个单独的<form>,或者使用一些Javascript来改变表单的action,这取决于你按哪个按钮。看起来不值得。