2014-04-01 9 views
15

views.pyहो रही है 'str' ऑब्जेक्ट कोई विशेषता Django

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 सीखना शुरू कर दिया है।

+0

क्या आपको यकीन है है, यह दृश्य कहा जाता हो रही है? यह देखने के लिए कि दृश्य को बुलाया जाता है, इस दृश्य के अंदर एक पीडीबी रखें। –

+0

कृपया पूर्ण ट्रेसबैक पोस्ट करें, कृपया। –

+0

@kroolik हो गया! ! – user3485393

उत्तर

39

आप एक django response के रूप में सीधे str पारित नहीं कर सकते हैं। आप का उपयोग करना चाहिए

from django.http import HttpResponse 

यदि आप के रूप में Django प्रतिक्रिया देखने स्ट्रिंग डेटा प्रस्तुत करना चाहते हैं। एक नज़र here

 
return HttpResponse(resp) 
+0

यह काम करता है लेकिन यह r.clinet ('test') प्रिंट नहीं कर रहा है r.number (संख्या)? कोई उपाय? अगर मैं सीधे किसी भी पूर्णांक को वापस कर देता हूं तो यह एक ही त्रुटि दे रहा है – user3485393

+0

कोई बदलाव हो सकता है कि यह हमेशा अन्य कथन में जा रहा है। मैं आपको मोबाइल या क्लाइंट नंबर प्राप्त करने के लिए फिर से अपने पुनः और अपने तर्क को पार करने के लिए सुझाव दूंगा। –

+1

यह 'रिटर्न एचटीपीस्पॉन्स (रेस) 'की बजाय' रिटर्न एचटीपी रेस्पॉन्स (रेस) 'है। – user898763452

0

Django विचारों हमेशा एक HttpResponse ऑब्जेक्ट प्रदान करना होगा, ताकि एक HttpResponse में कि स्ट्रिंग लपेटकर कोशिश:

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

साथ ही, generate_xml में number चर केवल स्ट्रिंग 'number', नहीं मिल पैरामीटर शामिल होंगे। कि पाने के लिए आपको उपयोग कर सकते हैं:

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

यह काम करता है लेकिन यह 'r.clinet ('test') '' r.number (संख्या)' प्रिंट नहीं कर रहा है? कोई उपाय? अगर मैं सीधे किसी भी पूर्णांक को वापस करता हूं तो यह एक ही त्रुटि दे रहा है – user3485393

+1

क्या आप निश्चित हैं कि आपकी नियमित अभिव्यक्ति सही है? याद रखें, जो भी आप लौटते हैं उसे एक HttpResponse में लपेटा जाना चाहिए, इसलिए यदि आप एक पूर्णांक वापस करना चाहते हैं, तो यह HttpResponse (str (the_number)) वापस आना चाहिए। – DavidM

+0

हां, नियमित अभिव्यक्ति सही है। – user3485393

संबंधित मुद्दे