Django页面中的表单

1 投票
2 回答
608 浏览
提问于 2025-04-18 05:23

我想做一个详细信息页面,像这样:

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

可以考虑使用 CreateView、UpdateView 和 DeleteView。

DetailView 是用来显示数据的。

这里介绍了在 Django 中使用基于类的视图处理表单的方法

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

撰写回答