Django页面中的表单
我想做一个详细信息页面,像这样:
class TaskDetailView(DetailView):
model = Task
template_name = 'todo/task_detail.html'
然后在这个页面里放一个表单,这样用户就可以添加这个任务。其实,如果为这个表单创建一个新页面,那就简单多了:
forms.py
class TaskForm(ModelForm):
class Meta:
model = task
fields = __all__
views.py
def TaskForm_view(request, pk):
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid(): # All validation rules pass
task.save()
return HttpResponseRedirect('/admin/') # Redirect after POST
else:
form = TaskForm() # An unbound form
return render(request, 'todo/add_task.html', {
'form': form,
})
urls.py:
url(r'^(?P<pk>\d+)/add/', 'todo.views.TaskForm_view', name='add')
但是,怎么在详细信息页面里创建一个带表单的页面呢?我找不到例子,求帮助!
2 个回答
1
2
你可以把表单放在一个上下文变量里,这样就可以在模板中通过 form 来访问它。
class TaskDetailView(DetailView):
model = Task
template_name = 'todo/task_detail.html'
def get_context_data(self, **kwargs):
context = super(TaskDetailView, self).get_context_data(**kwargs)
context['form'] = TaskForm()
return context