gpt4 book ai didi

javascript - Django:无法从 Javascript 调用 python 函数

转载 作者:行者123 更新时间:2023-12-02 14:29:40 26 4
gpt4 key购买 nike

我有一个具有以下结构的 Django 项目。我的项目名称是SimpleWeb。我有一个名为查询的应用程序。现在我有一个 HTML 页面,其中有一个下拉菜单和一个提交按钮。

这就是我正在尝试做的事情。当用户从下拉列表中选择一个项目并点击提交时,我想在我的 view.py 文件中调用一个 python 函数,对该项目执行一些操作并返回一个列表。

问题是我认为我的名为 runQuery 的函数由于某种原因没有被调用。下面是我的代码

SimpleWeb\urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^runQuery/$', include('query.urls')),
url(r'^$', include('query.urls')),
]

查询\urls.py

from django.conf.urls import include, url
from . import views

urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^runQuery', views.runQuery, name='runQuery'),
]

view.py

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
# this function powers the main page: 'http://127.0.0.1:8000/'
List = ['item1','item2','item3']
return render(request, 'query/home.html', {'list': List})


def runQuery(request):
# this function needs to be called using $http from javascript
# I want to get what user submitted in $http and do something with it here
# then return a list, below is a sample list
fruitList = ['apple', 'banana', 'orange']
return HttpResponse(fruitList)

script.js

angular.module('myApp', []);
angular.module('myApp').controller('myCtrl', ['$scope', '$http', function ($scope, $http) {

$scope.submitButtonclicked = function(){
var userInput = $scope.data.dropdown /* item that user chooses from dropdown*/

$http({
method: 'GET',
url: '/runQuery',
params: {yourChoice: userInput}
}).then(function successCallback(response){
console.log(response); /* When I debug in chrome browser, I see that it logs an HTML page as the response instead of fruit list */
}, function errorCallback(response) {
console.log("Oops, error occurred");
});
};
}]);

我再次发布了我认为相关的大部分代码,可能会帮助您找到解决方案。我的同事告诉我,我在 urls.py 文件中定义 runQuery 的方式可能会困惑,这就是为什么 runQuery() 函数是没有被正确调用。我不知道如何解决这个问题。谢谢你:)

最佳答案

您没有正确定义 URL,因此路由器无法找到正确的方法。定义 URL 的一种方法:

SimpleWeb\urls.py

from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('query.urls')),
]

查询\urls.py

from django.conf.urls import include, url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^runQuery', views.runQuery, name='runQuery'),
]

view.py

这里需要返回一个JSON对象。使用 HttpResponse 返回它的一种方法是使用 simplejson。

from django.shortcuts import render
from django.http import HttpResponse
from django.utils import simplejson

def index(request):
# this function powers the main page: 'http://127.0.0.1:8000/'
List = ['item1','item2','item3']
return render(request, 'query/home.html', {'list': List})


def runQuery(request):
# this function needs to be called using $http from javascript
# I want to get what user submitted in $http and do something with it here
# then return a list, below is a sample list
fruitList = simplejson.dumps("fruitlist" : ['apple', 'banana', 'orange'])
return HttpResponse(fruitList, content_type ="application/json")

关于javascript - Django:无法从 Javascript 调用 python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37948066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com