Python 将Django与Angular js集成

Python 将Django与Angular js集成,python,django,angularjs,Python,Django,Angularjs,这将是一个非常基本的问题,如何将Django与angularjs集成,我想使用json从数据库中转储数据,但我没有任何想法,或者你可以说我无法开始这个过程。我对Angularjs有一个非常基本的了解。如果你给出一些示例,那么它将帮助我使用Django开始Angularjs。为了更方便,这里是我制作的示例视图 def userphoto(request): user_photo = Photo.objects.get(user = request.user) context = R

这将是一个非常基本的问题,如何将Django与angularjs集成,我想使用json从数据库中转储数据,但我没有任何想法,或者你可以说我无法开始这个过程。我对Angularjs有一个非常基本的了解。如果你给出一些示例,那么它将帮助我使用Django开始Angularjs。为了更方便,这里是我制作的示例视图

def userphoto(request):
    user_photo = Photo.objects.get(user = request.user)
    context = RequestContext(request)
    ctx_dict = {'user_photo': user_photo}

    return render_to_response('userena/profile_detail.html',ctx_dict,context)
这里的ctx_dict直接呈现到一个html文件中,但我想使用Angularjs呈现它们,可能使用json和http get请求来实现使用Angularjs http服务的数据。我如何做到这一点?我是Angularjs的新手。


    • 当然,你可以使用django angular,但我发现这个软件包太在制品了

      您应该考虑AJAX,而不仅仅是渲染。这取决于一个问题

      我建议使用普通django或添加tastypie或django rest框架。一、 目前,使用普通django视图

      是的,要将模型数据发送回angular,您应该提供数据的JSON,您应该序列化您的模型。但是有很多问题和陷阱。首先,您不需要模型中的所有内容。因为用户可以访问一些奇怪的字段。因为您将发送太多在客户端不使用的数据

      因此,您应该将items数据序列化为带有所需字段的JSON。以下是我如何做到这一点的示例:

      @ajax_request
      @login_required
      def mydata_ajax(request):
          qs = MyData.objects.all()
      
          #add possible filters
          if request.GET.get('search'):
              s = request.GET.get('search')
              qs = qs.filter(
                  Q(name__icontains=s) |
                  Q(email__icontains=s) |
                  Q(address__icontains=s) |
              )
      
          qs = qs.order_by('task_time', 'name')
      
          #setup pagination so angular will retrieve data page by page
          pages = Paginator(qs, 20)
          try:
              current_page = int(request.GET.get('page', 1))
          except ValueError:
              current_page = 1
      
          if current_page > pages.num_pages:
              current_page = 1
      
          #get reguested page
          page = pages.page(current_page)
      
          #create response
          return {
              'total': pages.count,
              'num_pages': pages.num_pages,
              'page': current_page,
              'data': [{
                  'id': o.id,
                  'name': o.name,
                  'email': o.email,
                  'address': o.address,
              } for o in page.object_list]
          }
      
      首先,我使用django恼人包中的
      ajax\u request
      decorator作为我的视图,它希望视图返回列表、字典或任何其他简单数据,以便它将
      自动
      序列化(转换)为JSON


      这里有一些方便的东西,比如过滤器和分页的例子,顺便说一句。

      你能更详细地了解我真正想要的是什么吗?Django&Angular Js可以用来实现过滤器。这里有一篇关于这个问题的文章。