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'),
Immer wenn ich http://127.0.0.1:8000/voice/number?id=98
Anfordere, wird folgender Fehler angezeigt:
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-
Vollständiger Traceback:
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')
Ich habe gerade angefangen, Django
zu lernen.
Sie können str
nicht direkt als Django response
Übergeben. Du musst benutzen
from Django.http import HttpResponse
wenn Sie String-Daten als Django View-Antwort rendern möchten. schau hier
return HttpResponse (resp)
Django-Views müssen immer ein HttpResponse
-Objekt zurückgeben. Versuchen Sie also, diesen String in eine HttpResponse zu packen:
from Django.http import HttpResponse
return HttpResponse(str(resp))
Zusätzlich wird die Variable number
in generate_xml
enthält nur den String 'number'
, nicht der GET-Parameter. Um das zu bekommen, könnten Sie verwenden:
request.GET.get('id')