我试图在Django中添加Wikipedia API并通过view.py中的HTML输入处理Wikipedia。
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render
from django.http import HttpResponse
import wikipediaapi
from .forms import ContactForm, ColorfulContactForm
def _form_view(request, template_name='basic.html', form_class=ContactForm):
if request.method == 'POST':
form = form_class(request.POST)
mes = request.POST.get("message")
search = mes.split(' ')
query = search[2]
#return HttpResponse(mes)
mywiki(query)
if form.is_valid():
pass # does nothing, just trigger the validation
else:
form = form_class()
search_id = request.POST.get('message', None)
#
return render(request, template_name, {'form': form})
def mywiki(query):
wiki_wiki = wikipediaapi.wikipedia('en')
page_py = wiki.page(query)
title = page_py.title
return HttpResponse(title)
#return HttpResponse(mes )
我收到一条错误消息,报告:
TypeError: 'module' object is not callable
有人帮我
答案 0 :(得分:1)
错误原因:
正确的格式是wikipediaapi.Wikipedia('en')
,而不是Wikipediaapi.wikipedia('en')
请注意,维基百科中的W是大写字母。
还应该使用
page_py = wiki_wiki.page(query)
而不是
page_py = wiki.page(query)
由于您的对象变量是wiki_wiki,而不是wiki。
答案 1 :(得分:0)
问题似乎出在那行
wiki_wiki = wikipediaapi.wikipedia('en')
根据Wikipedia API文档
wiki_wiki = wikipediaapi.Wikipedia('en')
以大写字母Wikipedia
开头的 W
,它是一个类名,用于创建实例。当前正在使用的是wikipedia.wikipedia
,它是Python module,并且作为异常提示,不可调用。