1

我正在使用 django 框架建立一个网络应用程序/数据库。我正在尝试使用 django-datatables-views 将查询的结果以及来自表单的用户输入值查看到另一个页面上的数据表中。

我的项目/搜索/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

我的项目/搜索/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"}

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

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

谢谢!

4

1 回答 1

0

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

于 2019-05-17T16:04:32.157 回答