使用AngularJs和Djang的Ajax请求

2024-04-28 07:59:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图发出一个Ajax请求,但是,直到位于视图.py文件 出现错误

POST http://localhost:8000/escalar 403 (FORBIDDEN)

我不知道我做错了什么

目录的组织如下:

^{pr2}$

文件邮政编码.html在

<!DOCTYPE html>
<html ng-app>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
    <script>
        function ListDropdown($scope, $http){
            $scope.ccvms={lista01:['1','3','5','7','9'],lista02:['2','4','6','8','10']}
            $scope.send=function(x,y){
                $http.post("/escalar",x+y)
            }
        } 
    </script>
</head>

<body>
    <div ng-controller="ListDropdown">
        <select ng-model="ccvm" ng-options="ccvm as ccvm for (ccvm, nums) in ccvms"></select>
        <select ng-model="num" ng-disabled="!ccvm" ng-options="num for num in ccvms[ccvm]" ng-change="send(num, ccvm)"></select>
    </div>
</body>
</html>

文件网址.py在

from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^post2/','bvmfconsulta.views.post3'),
url(r'^escalar','bvmfconsulta.views.escalando')
)

文件视图.py在

from django.shortcuts import render_to_response
from bvmfconsulta.escala import demonstrativos

def post3(request):
   return render_to_response("postt.html")

def escalando(self,args):
   print args

Tags: 文件frompyimporthttpurlhtmlscript
1条回答
网友
1楼 · 发布于 2024-04-28 07:59:51

你必须做出一些改变。在

  1. 确保post请求的标题正确。在
  2. 更改angulars中的post命令,使post对象中包含数据 改变
  3. 您的django视图期望一个post请求并访问post数据。在

配置角度柱,使其具有正确的标题

在javascript部分:

var ListDropdown = angular.module('ListDropdown', ['ngResource']);
ListDropdown.config(function($httpProvider , $interpolateProvider, $resourceProvider){
    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
    //** django urls loves trailling slashes which angularjs removes by default.
    $resourceProvider.defaults.stripTrailingSlashes = false;

    //** you can skip these if you want
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
    **//
  });

更改angulars中的post命令,使post对象中有数据

^{pr2}$

发布时,最好将参数存储为数据。所以你的声明看起来像e

$http.post(url, data: {test: 'data'})

django视图期望一个post请求并访问post数据。

在你的视图.py公司名称:

{1}你可以考虑先通过一个cd1>来发送请求

def escalando(request,args):
   if request.method == 'POST':
       request.POST.get('test') ## show return data.

有关更多文档:

相关问题 更多 >