web-dev-qa-db-ja.com

「=」オブジェクトに属性「get」がない場合、Django

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を学び始めました。

28
user3485393

strDjango responseとして直接渡すことはできません。使用する必要があります

from Django.http import HttpResponse

文字列データをDjango応答を表示します。外観を確認してください here

 return HttpResponse(resp)
57
Prashant Gaur

Djangoビューは常にHttpResponseオブジェクトを返す必要があるため、その文字列をHttpResponseでラップしてみてください。

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

また、generate_xmlnumber変数には、GETパラメーターではなく、ストリング'number'のみが含まれます。それを取得するには、次を使用します。

request.GET.get('id')
2
DavidM