获取对象'str'在 Django 中没有属性'get'



views.py

def generate_xml(request, number):
    caller_id = 'x-x-x-x'
    resp = twilio.twiml.Response()
    with resp.dial(callerId=caller_id) as r:
         if number and re.search('[d()- +]+$', number):
            r.number(number)
         else:
             r.client('test')
   return str(resp)

url.py

url(r'^voice/(?P<number>w+)$', 'django_calling.views.generate_xml', name='generating TwiML'),

每当我请求http://127.0.0.1:8000/voice/number?id=98收到以下错误时:

Request Method:     GET
Request URL:    http://127.0.0.1:8000/voice/number?id=90
Django Version:     1.6.2
Exception Type:     AttributeError
Exception Value:    'str' object has no attribute 'get'
Exception Location:     /usr/local/lib/python2.7/dist-     

完整回溯:

Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/voice/number?id=90
Django Version: 1.6.2
Python Version: 2.7.5
Installed Applications:
 ('django.contrib.admin',
'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_calling',
'django_twilio',
'twilio')
 Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')

我刚刚开始学习Django.

不能直接传递str作为django response。您必须使用

from django.http import HttpResponse

如果你想将字符串数据渲染为 Django 视图响应。看看 django.http.HttpResponse

返回 HttpResponse(resp)

Django 视图必须始终返回一个HttpResponse对象,因此请尝试将该字符串包装在 HttpResponse 中:

from django.http import HttpResponse
return HttpResponse(str(resp))

此外,generate_xml 中的 number 变量将只包含字符串'number',而不是 GET 参数。为此,您可以使用:

request.GET.get('id')

最新更新