簡體   English   中英

將數據從Django視圖發送到angularjs控制器

[英]Send data from django views to angularjs controller

我正在嘗試將數據從Django views.py文件發送到angularjs controller.js文件,但無法發送。 問題是我無法將數據從視圖文件發送到控制器。 而且,當我運行代碼時,值{%steps%}不會更改為我在視圖文件中分配的值。 我不想使用Django rest框架來執行此操作。 還有其他方法可以實現這一目標嗎? 如果是的話,請幫幫我。

views.py

from django.shortcuts import render
from django.conf import settings
from user_data.models import GetData
import json

def home(req):
    return render(req, 'index.html')

def userData(req):
    if req.method == 'GET':
        user_data = GetData().getAllData()
        context_dict = {'user_data1' : json.dumps(user_data[0]),
                        'user_data2' : json.dumps(user_data[1]),
                        'user_steps' : json.dumps(2000)}

        return render(req, 'index.html', context_dict)

controller.js

'use strict';

MetronicApp.controller('DashboardController', function($rootScope, $scope, $http, $timeout) {
    $scope.$on('$viewContentLoaded', function() {   
        // initialize core components
        Metronic.initAjax();
    });
    $scope.steps = {{user_steps|safe}};
});

html文件:-

<div ng-controller="DashboardController" class="margin-top-10">
    <div class="row ">
                <div class="col-md-12 col-sm-12">
                    <div class="portlet light ">
                            <div class="portlet-title">
                                <div class="caption">
                                    <i class="icon-cursor font-purple-intense hide"></i>
                                    <span class="caption-subject font-purple-intense bold uppercase">Tracker Report</span>
                                </div>
                                <div class="actions">
                                    <a href="javascript:;" class="btn btn-sm btn-circle btn-default easy-pie-chart-reload">
                                    <i class="fa fa-repeat"></i> Reload </a>
                                </div>
                            </div>
                            <div class="portlet-body">
                                <div class="row">
                                <div class="col-md-3">
                                    <div class="easy-pie-chart">
                                        <div class="number transactions" data-percent="55">
                                            <span>{$ steps $}</span>
                                        </div>
                                        <!-- <a class="title" href="#"> -->
                                        Steps <!-- <i class="icon-arrow-right"></i> -->
                                        </a>
                                    </div>
                                </div>
                                <div class="margin-bottom-10 visible-sm">
                                </div>
                                <div class="col-md-3">
                                    <div class="easy-pie-chart">
                                        <div class="number visits" data-percent="85">
                                            <span>
                                            +85 </span>
                                            %
                                        </div>
                                        <!-- <a class="title" href="#"> -->
                                        Sleep<!-- <i class="icon-arrow-right"></i> -->
                                        </a>
                                    </div>
                                </div>
                                <div class="margin-bottom-10 visible-sm">
                                </div>
                                <div class="col-md-3">
                                    <div class="easy-pie-chart">
                                        <div class="number bounce" data-percent="46">
                                            <span>
                                            +46 </span>
                                            %
                                        </div>
                                        <!-- <a class="title" href="#"> -->
                                        Calories <!-- <i class="icon-arrow-right"></i> -->
                                        </a>
                                    </div>
                                </div>
                                <div class="margin-bottom-10 visible-sm">
                                </div>
                                <div class="col-md-3">
                                    <div class="easy-pie-chart">
                                        <div class="number bounce" data-percent="32">
                                            <span>
                                            +32 </span>
                                            %
                                        </div>
                                        </a>
                                    </div>
                                </div>

                            </div>
                            </div>
                        </div>
                </div>
</div>

這基本上是我在django的一個主要項目中所做的(但是我不確定100%是否是您要找的,或者這不是您想要的答案)。 因此,我沒有創建views.py,而是創建了custom.py文件,在其中創建了自定義API,並在django應用的urls.py中調用了它們(使用urlpatterns)。 我還有另一套我正在使用django rest框架的API,我為其創建視圖集而不是簡單視圖。 以防萬一,您有興趣,您可能想閱讀此SO鏈接

但是,由於您特別提到您不想使用django rest框架,因此,如上所述,我將為您提供一個custom.py文件的示例。 在下面,您將找到在custom.py中定義的API的示例,

@api_view(['GET'])
def get_user_details(request):
    """
    API View that gives a user detail

    ---

    parameters:
        - name: email
          description: The email of the user based on which his/her information has been extracted
          required: true
          type: string

    responseMessages:
        - code: 400
          message: Email required as GET parameters.
          message: User not found.
        - code: 200
          mesage: User details sent successfully

    consumes:
        - application/json
        - application/xml
    produces:
        - application/json
        - application/xml

    """

    email = request.query_params.get('email', None)

    if email is None:
        return HttpResponseBadRequest("Email required as GET parameters.")

    try:
        user = User.objects.get(username=email)
    except User.DoesNotExist:
        return HttpResponseBadRequest("User not found.")

    response_data = {'id': user.id, 'first_name': user.first_name, 'last_name': user.last_name,}

    return HttpResponse(json.dumps(response_data), content_type="application/json")

然后,我的django應用中的urls.py看起來像:

urlpatterns = router.urls

urlpatterns = urlpatterns + [
    url(r'get_user_details/', get_user_details),
]

我的控制器看起來像這樣:

  CheckEmail : function (current) {
    return $http({
        method: 'GET',
        url: baseAPI + 'admin/get_user_details/',
        params: {email: current},
    })
  },

然后,隨后,您可以使用句柄在HTML文件中呈現要打印的變量。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM