在为fb messenger开发bot时,无法在自定义视图中获取self.request.GET中的hub.verify_token键

时间:2016-11-23 02:22:01

标签: facebook python-2.7 django-views bots ngrok

我跟随https://abhaykashyap.com/blog/post/tutorial-how-build-facebook-messenger-bot-using-django-ngrok开发机器人。我的代码如下:

MyFirstChatBot / fb_MyFirstChatBot / views.py

导入json,请求,随机,重新

来自pprint import pprint

来自django.utils.datastructures导入MultiValueDictKeyError

来自django.views import generic

来自django.http.response导入HttpResponse

来自django.views.decorators.csrf import csrf_exempt

来自django.utils.decorators导入method_decorator

------------------------使用您的页面访问令牌填写此内容! -------------------------------

VERIFY_TOKEN =" 2318934571"

辅助功能

在此创建您的观点。

类MyFirstChatBotView(generic.View):

def get(self, request, *args, **kwargs):

    if self.request.GET['hub.verify_token'] == VERIFY_TOKEN:
        return HttpResponse(self.request.GET['hub.challenge'])
    else:
        return HttpResponse('Error, invalid token')

@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
    return generic.View.dispatch(self, request, *args, **kwargs)

MyFirstChatBot / fb_MyFirstChatBot / urls.py

来自django.conf.urls import include,url

来自.views的

导入MyFirstChatBotView  和url模式如下: urlpatterns = [                   url(r' ^ 66d2b8f4a09cd35cb23076a1da5d51529136a3373fd570b122 /?$',MyFirstChatBotView.as_view())                ]

但是我得到了MultiValueDictKeyError,如下所示: MultiValueDictKeyError at / fb_MyFirstChatBot / 66d2b8f4a09cd35cb23076a1da5d51529136a3373fd570b122 / "' hub.verify_token'" 请求方法:GET 请求网址:

http://127.0.0.1:8000/fb_MyFirstChatBot/66d2b8f4a09cd35cb23076a1da5d51529136a3373fd570b122/?HelloWorld

Django版本:1.10.3

异常类型:MultiValueDictKeyError

例外值:
"' hub.verify_token'" 例外地点:      getitem 中的C:\ Python27 \ lib \ site-packages \ django \ utils \ datastructures.py,第85行

Python可执行文件:
C:\ Python27 \ python.exe Python版本:2.7.10

请帮助我。谢谢提前

1 个答案:

答案 0 :(得分:-1)

当前异常显示您对请求所期望的变量hub.verify_token不存在。您可以将其打包在try-except块中,也可以使用self.request.GET.get('hub.verify_token', <some_default_value>)。您确定hub.verify_token变量拼写正确吗?因为它没有附带请求