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'),
Chaque fois que je demande http://127.0.0.1:8000/voice/number?id=98
obtention de l'erreur suivante:
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-
Traceback complet:
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')
Je viens de commencer à apprendre Django
.
Vous ne pouvez pas passer directement str
en tant que Django response
. Tu dois utiliser
from Django.http import HttpResponse
si vous voulez rendre les données de chaîne sous la forme Django affichez la réponse. jetez un œil ici
renvoie HttpResponse (resp)
Les vues Django doivent toujours renvoyer un objet HttpResponse
, essayez donc d'encapsuler cette chaîne dans une HttpResponse:
from Django.http import HttpResponse
return HttpResponse(str(resp))
De plus, la variable number
dans generate_xml
ne contiendra que la chaîne 'number'
, pas le paramètre GET. Pour l'obtenir, vous pouvez utiliser:
request.GET.get('id')