2016-09-29 1 views
0

Привет У меня есть модель Django, как показано ниже:Как получить все объекты в модели Django (Databse таблицы) на основе фильтра с использованием AngularJs

from __future__ import unicode_literals 

from django.db import models 
from django.contrib.auth.models import User 
# Create your models here. 

class Journal(models.Model): 
    name = models.CharField(max_length=120) 
    created_by = models.ForeignKey(User, related_name='+') 
    date_created = models.DateTimeField(auto_now=False, auto_now_add=True) 
    date_modified = models.DateTimeField(auto_now=True, auto_now_add=False) 

    def __unicode__(self): 
     return (self.name) 

и мои angularJs ниже:

var app = angular.module("journalApp", []); 
    app.controller("myCtrl", function($scope) { 

}); 

Как я могу сделать запрос в AngularJs, чтобы получить все объекты из моей модели Django на основе пользователя, который вошел в систему? Есть идеи, ребята? Заранее спасибо.

ответ

1

Попробуйте этот метод на стороне сервера

import json 
from django.http import JsonResponse 
from django.views.generic View 

from .models import Journal 


class JSONResponseMixin(object): 
    """ 
    A mixin that can be used to render a JSON response. 
    """ 
    def render_to_json_response(self, context, **response_kwargs): 
     """ 
     Returns a JSON response, transforming 'context' to make the payload. 
     """ 
     return JsonResponse(
     self.get_data(context), 
     **response_kwargs 
     ) 

    def get_data(self, context): 
     """ 
     Returns an object that will be serialized as JSON by json.dumps(). 
     """ 
     return context 

class JournalView(JSONResponseMixin, View): 

    def get(self, request, *args, **kwargs): 
     response_data = {} 
     response_data['data'] = Journal.objects.filter(created_by=self.request.user).values() 
     return self.render_to_json_response(dict(response=response_data)) 

Конечно, вы должны добавить его просмотра в вашем urls.py

стороне клиента попробовать этот метод

var app = angular.module("journalApp", []); 
    app.controller("myCtrl", function($scope, $http) { 

    var url = "/your-url-to-view"; # {% url 'init_data' %}} 

    $scope.initData = function(){ 
     $http.get(url).then(function(data){ 
      $scope.data = data.data.response; 
     }) 
    } 

}); 
1

Чтобы получить все объекты журнала, вы можете создать представление с django REST framework и на угловой стороне просто создать Service и использовать $resource или $http или пойти на рекомендованный restangular для извлечения данных из Джанго апите отдых. django REST framework также может использоваться для аутентификации.

Смежные вопросы