urls template python django django-views django-urls

python - template - Obtener el objeto ''str'' no tiene ningún atributo ''get'' en Django



django urls path (2)

Las vistas de Django siempre deben devolver un objeto HttpResponse , así que intente envolver esa cadena en un HttpResponse:

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

Además, la variable number en generate_xml contendrá solo la cadena ''number'' , no el parámetro GET. Para conseguir eso, podrías usar:

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

vistas.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''),

Cada vez que solicito http://127.0.0.1:8000/voice/number?id=98 obtengo el siguiente error:

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-

Rastreo completo:

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'')

Acabo de empezar a aprender Django .


No puede pasar directamente str como una django response . Debes usar

from django.http import HttpResponse

Si desea generar datos de cadena como respuesta de vista de django. echar un vistazo here

return HttpResponse(resp)