TypeError:“模块”对象在Django中不可调用

时间:2018-07-11 06:32:24

标签: python django forms wikipedia-api

我试图在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

有人帮我

2 个答案:

答案 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,并且作为异常提示,不可调用。