我正在尝试使用Django开发一个聊天机器人,并根据用户的输入,需要运行各种python脚本。
具有项目结构(如下所示),有没有办法在chatbot.js中调用news.py?
我尝试过ajax请求:
$.ajax({
type: "POST",
url: "news/",
data: { }
}).done(function( o ) {
print('success')
});
并在我的 urls.py
中定义了 news /url('news/', getNews)
在我的视图中定义了 getNews
from artemis.static.marketdata.news import scrape
class getNews():
scrape()
但出现 500错误,说 TypeError:object()不带参数
跟踪:
Internal Server Error: /news/
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
response = get_response(request)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: object() takes no parameters
在这种情况下最好的方法是什么? 任何提示将不胜感激!
答案 0 :(得分:3)
Django具有“功能”视图和“类”视图。
您正在定义<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="itemContainer" data-id="1">
Item information
<input type="button" class="rename">
<input type="button" class="delete">
</div>
<div class="itemContainer" data-id="2">
Item information
<input type="button" class="rename">
<input type="button" class="delete">
</div>
。因此,您必须选择使用“功能”视图或“类”视图。
要使用功能视图,请将“类”更改为“ def”:
class getNews()
要使用类视图,请以正确的方式定义“ getNews()”。
视图中:
from django.http import HttpResponse
def getNews(request):
result = scrape()
return HttpResponse(result)
在urls.py中:
from django.views import View
from django.http import HttpResponse
class NewsView(View):
...
def get(self, request, *args, **kwargs):
result = scrape()
return HttpResponse(result)
答案 1 :(得分:1)
我认为您的课程声明有误。
class getNews(object):
def __init__(self, *args, **kwargs):
# continue here
def scrape(self):
# continue here
新型类是从object
继承的,而不是从NoneType
继承的。
注意:此答案解决了源代码错误,与django无关,只是python语法。
Samuel Chen的答案解决了如何在Django中创建视图。 django视图是一种新样式的类,它是从django.views.View
派生的。它包含与HTTP方法相对应的方法(即get
,post
,put
等)。