Django - 结合数据表视图和表单视图
Django - Combining a datatable view and form view
我正在尝试将来自数据table 的table 和一个脆皮表格放入一个视图中,以便我可以在django 的单个页面上显示它。我完全不知道如何组合它们,因为我还是个新手。
非常感谢任何帮助!!
Views.py ------------- Datatable below
class CustomerTable(XEditableDatatableView):
template_name = "customers.html"
model = Customer
datatable_options = {
'columns': [
("Title", 'Title'),
("Name", 'PoC', helpers.make_xeditable),
("Email", 'PoCEmail', helpers.make_xeditable),
("Location", 'Location', helpers.make_xeditable),
("DateAdded", 'DateAdded', helpers.make_xeditable),
],
'hidden_columns': ['ID'],
}
-----------Crispy Form below
def CustomerView(request):
form = CustomersForm(request.POST or None)
success = False
if request.method == 'POST':
if form.is_valid():
form.save()
form = CustomersForm()
success = True
if request.POST.get('delete'):
obj.delete()
customer_form = CustomersForm()
return render(request, 'customers.html', {'customer_form': customer_form})
urls.py ----------------
urlpatterns = patterns('',
url(r'^$', views.CustomerTable.as_view(), name='customertable'),
url(r'^$', 'ISL.views.CustomerView', name='customersform'),
)
感谢您的帮助!
W
您可以像这样尝试使用 class 的 get_context_data() 方法:
def get_context_data(self, **kwargs):
context = super(CustomerTable, self).get_context_data(**kwargs)
# do your magic here <<<
# then
context['customer_form'] = customer_form
return context
首先您通过超级内置函数调用祖先的 get_context_data 方法,然后您可以将您想要的任何内容附加到上下文,在您的示例中它是自定义表单。在此之后,您可以在模板中访问 'custom_form'。
不幸的是,我现在无法测试它,但是这个方法必须通过 ContextMixin 附加在祖先中(关于这个方法的 django 文档:https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-simple/)。
我正在尝试将来自数据table 的table 和一个脆皮表格放入一个视图中,以便我可以在django 的单个页面上显示它。我完全不知道如何组合它们,因为我还是个新手。
非常感谢任何帮助!!
Views.py ------------- Datatable below
class CustomerTable(XEditableDatatableView):
template_name = "customers.html"
model = Customer
datatable_options = {
'columns': [
("Title", 'Title'),
("Name", 'PoC', helpers.make_xeditable),
("Email", 'PoCEmail', helpers.make_xeditable),
("Location", 'Location', helpers.make_xeditable),
("DateAdded", 'DateAdded', helpers.make_xeditable),
],
'hidden_columns': ['ID'],
}
-----------Crispy Form below
def CustomerView(request):
form = CustomersForm(request.POST or None)
success = False
if request.method == 'POST':
if form.is_valid():
form.save()
form = CustomersForm()
success = True
if request.POST.get('delete'):
obj.delete()
customer_form = CustomersForm()
return render(request, 'customers.html', {'customer_form': customer_form})
urls.py ----------------
urlpatterns = patterns('',
url(r'^$', views.CustomerTable.as_view(), name='customertable'),
url(r'^$', 'ISL.views.CustomerView', name='customersform'),
)
感谢您的帮助! W
您可以像这样尝试使用 class 的 get_context_data() 方法:
def get_context_data(self, **kwargs):
context = super(CustomerTable, self).get_context_data(**kwargs)
# do your magic here <<<
# then
context['customer_form'] = customer_form
return context
首先您通过超级内置函数调用祖先的 get_context_data 方法,然后您可以将您想要的任何内容附加到上下文,在您的示例中它是自定义表单。在此之后,您可以在模板中访问 'custom_form'。
不幸的是,我现在无法测试它,但是这个方法必须通过 ContextMixin 附加在祖先中(关于这个方法的 django 文档:https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-simple/)。