如何将django-datatables-view重定向到正确的HTML模板?

时间:2019-05-17 15:52:56

标签: django django-datatable

我正在使用django框架设置一个Web应用程序/数据库。我正在尝试使用django-datatables-views将查询的结果与表单中的用户输入值一起查看到另一页上的数据表中。

My_project / search / views.py

class index(View):
    def get(self, request):
        return render(request, 'search/index.html')

class OrderListJson(BaseDatatableView):
    template_name = "search/results.html"
    order_columns = ['column1', 'column2']

    def get_initial_queryset(self):
        db = Database('default', readonly=True)
        qs = Some_table.objects_in(db)

    def filter_queryset(self, qs):
        search_id = self.request.POST.get('textfield', None)
        qs = qs.filter(column1=search_id)
        return qs

    def prepare_results(self, qs):
        json_data = []
        for item in qs:
            json_data.append([
                escape(item.column1),  
                escape(item.column2),
        ])
        return json_data

My_project / search / urls.py

urlpatterns = [
    path('', index.as_view(), name='index'),
    path('search/', OrderListJson.as_view(), name='order_list_json'),
]

My_project / search / template / search / results.html

{% extends 'layout.html' %}
{% block head %}
 <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
 <style type="text/css" class="init">

 </style>
 <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
 <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
 <script type="text/javascript" charset="utf8" src="../../../templates/js/datatableview.js"></script>
 <script type="text/javascript" class="init">


$(document).ready(function() {
    var oTable = $('.datatable').dataTable({
        // ...
        "processing": true,
        "serverSide": true,
        "ajax": "{% url 'order_list_json' %}"
    });
    // ...
});


 </script>
{% endblock %}

{% block content %}
{{ datatable }}
{% endblock %}

我只看到json对象。

{"draw": 0, "recordsTotal": 168470170, "recordsFiltered": 2380, "data": [["4059", "233"], ["17099", "198"]], "result": "ok"}

不是嵌入在格式化的result.html页面中的数据表。

如何使OrderListJson()呈现到results.htm?

谢谢!

1 个答案:

答案 0 :(得分:-1)

基于BaseDatatableView的类将默认输出JSON数据。如果要显示模板,可以尝试使用TemplateView类。