Django Angularjs如何调用具有特定ID的Http请求

Posted

技术标签:

【中文标题】Django Angularjs如何调用具有特定ID的Http请求【英文标题】:Django Angularjs How to call Http request with specific Id 【发布时间】:2014-08-13 08:41:43 【问题描述】:

我是 angularjs 的新手。我正在尝试使用 angularjs 在我的 django 模板之一中提取数据。这是我实际尝试提取数据的视图。

def download_history(request,download_id):
    from django.core import serializers
    download_history = DownloadHistory.objects.filter(user = request.user,pk=download_id)
    ctx_detail_history = serializers.serialize('json', download_history)

    return HttpResponse(ctx_detail_history)

这是网址

url(r'^history_detail/(?P<download_id>\d+)/$',views.download_history,name = 'download_history'),

这是我的模板,我试图在其中提取数据并尝试在 jquery 弹出模式中显示。

% extends 'base.html' %
% block title%User Subscription %endblock%
%block content%

<div style="margin-top:100px;background-color:#85ADFF;" ng-app='history'>

    <table class="table table-striped" >
        %for download_history_name in download_history%
         <tr>

          <td><button type='button' data-toggle="modal" data-target="#myModal"><a href=%url 'download_history' download_history_name.id % >download_history_name.name and the id download_history_name.id</a></button></td>
         </tr>
        %endfor%
</table>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Objact Name</h4>
      </div>
      <div class="modal-body">
         <div class="table-responsive">
          <table class="table table-striped" ng-controller='HistoryCtrl'>

            <tbody>
                <tr>
                    [detail_history.fields.name]
                    [detail_history.fields.download_rate]
                    [detail_history.fields.photo.url]
                    [detail_history.fields.downloaded_time]
                    [detail_history.fields.DuePayment]
                </tr>
            </tbody>

          </table>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>




</div>  

%block extrajs%
<script>

var app = angular.module('history',[]);
app.config(function($httpProvider)
   $httpProvider.defaults.xsrfCookieName = 'csrftoken';
   $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';

);

app.config(function($interpolateProvider)
   $interpolateProvider.startSymbol('[');
   $interpolateProvider.endSymbol(']');

);

app.controller('HistoryCtrl',['$scope','$http' , function($scope,$http)
    $http.get('/history/history_detail/(? P<download_id>\d+)/').success(function(data)
          //$scope.doToggle=false;
          $scope.detail_history=data;
        ).error(function(data,status)
              $scope.data = data || 'Request Fails';
              $scope.status = status;
              console.log(data)
            );

  ]);
</script>


%endblock%

%endblock%

现在的问题是,虽然我试图用特定的 id 提取数据,但它不起作用,事实上,如果我检查页面,它会显示返回 URL 的东西 p>

   http://localhost:8000/history/history_detail/(?Pd+)/

现在是什么问题,我肯定在这里犯了一个错误,但是我是angularjs的新手,无法弄清楚。是否可以使用ng-click功能解决问题?

【问题讨论】:

【参考方案1】:

通过对 javascript 的粗略检查,您似乎正在尝试向包含正则表达式的 URL 发出 GET 请求。这对您的 Django 配置很有意义,因为您告诉应用程序在您分配给名为 download_id 的变量的 url 中期望一个数字。您似乎已将此 URL 直接复制到您的 JavaScript 中,实际上您应该在 GET 请求中提供特定的下载 ID(例如“/history/history_detail/12345/”)。

【讨论】:

id 会在事件发生后从锚标签中检索 .. @Tanweer 除非它不会,因为你还没有编写任何代码来做到这一点。

以上是关于Django Angularjs如何调用具有特定ID的Http请求的主要内容,如果未能解决你的问题,请参考以下文章

Django 和 AngularJS:如何显示来自 Django 调试错误消息的 Angular $http 错误

无法使用 angularjs 调用 django json 视图

AngularJS:处理单击具有特定类的 div

如何在Django中查询具有特定数量的外键关系并且在这些外键值中具有特定值的对象?

如何在 django for 循环中显示/隐藏特定元素

如何在Django中获取具有特定权限组的所有用户的列表