2016-04-19 11 views
0

django views.pyファイルからangularjs controller.jsファイルにデータを送信しようとしましたが、送信できません。 問題はビューファイルからコントローラにデータを送信できないことです。私のコードを実行すると、値{%steps%}はビューファイルに割り当てられた値に変更されません。 私はこれを行うためにDjango restフレームワークを使いたくありません。 これを達成する他の方法はありますか?はいの場合は、私を助けてください。djangoビューからangularjsコントローラにデータを送信

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> 
+2

あなたのお手伝いをするために十分な情報をお伝えしておりません。あなたが投稿したコードの何が間違っていますか?何が起こるのですか?代わりに何をしたいですか?どのようなエラーが表示されますか? –

+0

@DanielRoseman問題はこれです。ビューファイルからコントローラにデータを送信できません。私のコードを実行すると、値{%steps%}はビューファイルに割り当てられた値に変更されません。 – User0706

+0

jsファイルでdjangoテンプレート構文を使用しようとしていますが、djangoはjavascriptファイルをレンダリングしません。 – Sayse

答えて

2

これは基本的に何であります私は私の主要なジャンゴプロジェクトの1つで行っています(しかし、私は100%確信していません、これは、これはあなたが探しているものではない、答えとして)。 したがって、views.pyの代わりにカスタムAPIを作成し、私のdjangoアプリケーションのurls.pyに(urlpatternsを使用して)それらを呼び出すcustom.pyファイルを作成しました。そして、私はDjango Restフレームワークを使用しているAPIの別のセットを持っています。これは単純なビューではなくビューセットを作成します。場合によっては、あなたは興味があります、あなたはthis SO linkと読むのが好きかもしれません。

しかし、あなたは特にあなたがdjango restフレームワークを使いたくないと述べているので、上記のようにcustom.pyファイルの例を挙げます。

urlpatterns = router.urls 

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

私のコントローラはなります:あなたは、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がどのように見えるでしょう以下

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

その後、ハンドルを使用して印刷する変数をHTMLファイルにレンダリングすることができます。

希望、それは役に立ちます。

+0

これでapiを作成する必要がありますか?正確に私がしたいのは、pythonフレームワークを使ってdynamodb(amazon Web Services DB)からデータを取得し、それをanglejsを使って表示することです。 – User0706

+0

はい、私はAPIを作成して問題を解決できるかもしれません。私のプロジェクトでさえ、s3バケットに格納されたデータが含まれており、djangoモデルを使用してデータベーススキーマ全体を定義しています。私は、私がcustom.pyファイルに書いたより多くのAPIでデータベースを照会しています。そして、JSONでAPIのそれぞれから生成された応答データを送信します(角度で処理され、データは前面に表示されます)。終わり)。 – Shubhanshu

関連する問題