Я должен использовать angular 8 таблиц данных с django каркасом отдыха. Я написал серверный код, который возвращает успокоительный API. Любая помощь в написании кода angular на стороне сервера будет очень полезна. Я попытался с помощью документации, она не работает. Вот код остальной структуры
class DataTableListCreateAPIView(ListCreateAPIView):
pagination_class = DataTablePagination
search_parameters = ()
default_order_by = ''
unfiltered_query_set = None
def get_queryset(self):
self.unfiltered_query_set = query_set = super(DataTableListCreateAPIView, self).get_queryset()
order_by_index = int(self.request.query_params.get('order[0][column]',0))
orderable = bool(self.request.query_params.get('columns[{}][orderable]'.format(order_by_index), self.default_order_by).replace('.','__'))
if order_by_index == 0 or not orderable:
order_by_index = 1
order_by = self.request.query_params.get('columns[{}][data]'.format(order_by_index), self.default_order_by).replace('.','__')
order_by_dir = self.request.query_params.get('order[0][dir]','asc')
if order_by_dir == 'desc':
order_by = '-{}'.format(order_by)
search_queries = self.request.query_params.get('search[value]','').strip().split(' ')
q = Q()
if len(search_queries) > 0 and search_queries[0] != u'':
for params in self.search_parameters:
for query in search_queries:
temp = {
'{}__contains'.format(params):query,
}
q |= Q(**temp)
query_set = query_set.filter(q)
if order_by == '':
return query_set
return query_set.order_by(order_by)
def get(self,request,*args,**kwargs):
result = super(DataTableListCreateAPIView, self).get(request,*args,*kwargs)
result.data['draw'] = int(request.query_params.get('draw',0))
result.data['recordsFiltered'] = result.data['count']
result.data['recordsTotal'] = self.unfiltered_query_set.count()
del result.data['count']
result.data['data'] = result.data['results']
del result.data['results']
return result
class ReligionDataTableView(DataTableListCreateAPIView):
serializer_class = ReligionSerializer
search_parameters = ('name',)
default_order_by = 'name'
queryset = Religion.objects.all()
, который возвращает следующий результат {"next":null,"previous":null,"draw":0,"recordsFiltered":10,"recordsTotal":10,"data":[{"id":5,"name":"Christian","created_date":"2020-02-09T03:13:11.892478Z","staff":null},{"id":1,"name":"Christian union","created_date":"2019-12-14T01:36:35.384599Z","staff":null},{"id":6,"name":"Jewish","created_date":"2020-02-09T03:13:29.611206Z","staff":null},{"id":4,"name":"Seventh Day Adventist","created_date":"2019-12-18T05:58:31.359246Z","staff":null},{"id":3,"name":"Seventh Day Adventist","created_date":"2019-12-14T01:52:52.485440Z","staff":null},{"id":8,"name":"Seventh day","created_date":"2020-03-08T01:45:57.534001Z","staff":null},{"id":7,"name":"YCS","created_date":"2020-03-08T01:44:46.555526Z","staff":null},{"id":2,"name":"Young Christian Association","created_date":"2019-12-14T01:36:54.039418Z","staff":null},{"id":12,"name":"ghdsghdsghsd","created_date":"2020-03-08T13:45:09.238152Z","staff":3},{"id":10,"name":"hhdhshjds","created_date":"2020-03-08T13:44:57.133368Z","staff":3}]}
Я пытался написать следующий angular front, но не работает
ngOnInit(): void {
const that = this;
this.faithService.getReligionList();
//DATATABLES OPTIONS
//this.getReligion();
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 100,
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
this.http.post<DataTablesResponse>(environment.rootUrl + 'religion-list/', dataTablesParameters, {}).subscribe(resp => {
console.log(resp);
that.religions = resp.data
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
columns: [{ data: 'name' }]
}
}
Любая помощь по написанию интерфейс, который будет подключаться к этому API на стороне сервера?