У меня есть запрос, как этотобъект 'QueryDict' не имеет атрибута 'GET'
Request URL: http://A.B.C.18:8010/pbx/directory/?hostname=msk-m9-sip232.db.ru§ion=directory&tag_name=domain&key_name=name&key_value=test1.db.ru&Event-Name=REQUEST_PARAMS&Core-UUID=96bec236-d834-4c19-971d-d9a5c7aafd58&FreeSWITCH-Hostname=msk-m9-sip232.db.ru&FreeSWITCH-Switchname=msk-m9-sip232.db.ru&FreeSWITCH-IPv4=A.B.C.232&FreeSWITCH-IPv6=%3A%3A1&Event-Date-Local=2014-12-30%2001%3A35%3A09&Event-Date-GMT=Mon,%2029%20Dec%202014%2021%3A35%3A09%20GMT&Event-Date-Timestamp=1419888909111423&Event-Calling-File=sofia_reg.c&Event-Calling-Function=sofia_reg_parse_auth&Event-Calling-Line-Number=2481&Event-Sequence=3594&action=sip_auth&sip_profile=internal&sip_user_agent=Bria%204%204.1%2073903-085cc850-M&sip_auth_username=10001&sip_auth_realm=test1.db.ru&sip_auth_nonce=a7a0ed08-8839-4925-83e9-665bdb0ad7fe&sip_auth_uri=sip%3Atest1.db.ru&sip_contact_user=10001&sip_contact_host=X.Z.A.137&sip_to_user=10001&sip_to_host=test1.db.ru&sip_via_protocol=udp&sip_from_user=10001&sip_from_host=test1.db.ru&sip_call_id=MWRjMTAyZjdiMTQ4OGZmMTIyOWRiMjc1NzI2M2MxNDY&sip_request_host=test1.db.ru&sip_auth_qop=auth&sip_auth_cnonce=dc542a5c5e9d34f7ed48a58bb6f3a9c3&sip_auth_nc=00000001&sip_auth_response=3419868ab9af9e4e5585cbaabba08f0b&sip_auth_method=REGISTER&key=id&user=10001&domain=test1.db.ru&ip=X.Z.A.137
и увидеть эту ошибку
Exception Value:
'QueryDict' object has no attribute 'GET'
на
data = request.GET
Если изменить запрос на
Request URL: http://A.B.C.18:8010/pbx/directory/?hostname=msk-m9-sip232.db.ru§ion=directory&tag_name=domain&key_name=name&key_value=test1.db.ru&Event-Name=REQUEST_PARAMS&Core-UUID=96bec236-d834-4c19-971d-d9a5c7aafd58&FreeSWITCH-Hostname=msk-m9-sip232.db.ru&FreeSWITCH-Switchname=msk-m9-sip232.db.ru&FreeSWITCH-IPv4=A.B.C.232&FreeSWITCH-IPv6=%3A%3A1&Event-Date-Local=2014-12-30%2001%3A35%3A09&Event-Date-GMT=Mon,%2029%20Dec%202014%2021%3A35%3A09%20GMT&Event-Date-Timestamp=1419888909111423&Event-Calling-File=sofia_reg.c&Event-Calling-Function=sofia_reg_parse_auth&Event-Calling-Line-Number=2481&Event-Sequence=3594&action1=sip_auth&sip_profile=internal&sip_user_agent=Bria%204%204.1%2073903-085cc850-M&sip_auth_username=10001&sip_auth_realm=test1.db.ru&sip_auth_nonce=a7a0ed08-8839-4925-83e9-665bdb0ad7fe&sip_auth_uri=sip%3Atest1.db.ru&sip_contact_user=10001&sip_contact_host=X.Z.A.137&sip_to_user=10001&sip_to_host=test1.db.ru&sip_via_protocol=udp&sip_from_user=10001&sip_from_host=test1.db.ru&sip_call_id=MWRjMTAyZjdiMTQ4OGZmMTIyOWRiMjc1NzI2M2MxNDY&sip_request_host=test1.db.ru&sip_auth_qop=auth&sip_auth_cnonce=dc542a5c5e9d34f7ed48a58bb6f3a9c3&sip_auth_nc=00000001&sip_auth_response=3419868ab9af9e4e5585cbaabba08f0b&sip_auth_method=REGISTER&key=id&user=10001&domain=test1.db.ru&ip=X.Z.A.137
все в порядке!
меняю только один параметр
action to action1
urls.py
from django.conf.urls import patterns, url
from face import views as fv
from pbx import views as pv
urlpatterns = patterns('',
url(r'directory/$', pv.get_user_info,),
)
views.py
from django.shortcuts import render
from django.db.models import Q
from face import models as fm
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render_to_response, get_object_or_404
from django.http import Http404
from django.http import HttpResponse
import json, datetime
from django.utils.html import escape
...
def get_all_domains(location):
location = get_object_or_404(fm.PBXServerLocation, name=location)
domains = fm.PBXDomain.objects.filter(location=location).filter(Q(status=1) | Q(status=2))
return render_to_response('section_directory.xml', {'domains': domains})
def get_user_info(data):
location = get_object_or_404(fm.PBXServerLocation, name=data.get('hostname', default=None))
domains = fm.PBXDomain.objects.filter(location=location).filter(Q(status=1) | Q(status=2))
domain = data.get('domain', default=None)
if domain is not None and domain in domains:
domain = get_object_or_404(fm.PBXDomain, name=domain)
user = fm.PBXUser.objects.filter(user_id=data.get('user', default=None), pbx_domain=domain)
return render_to_response('section_directory_user.xml', {'user': user})
else:
raise Http404
@csrf_exempt
def get_user_info(request):
if request.method == "GET":
data = request.GET
else:
data = request.POST
# list_users
if data.get('section', default=None) == "directory" and \
data.get('tag_name', default=None) == "" and \
data.get('key_name', default=None) == "" and \
data.get('key_value', default=None) == "":
return get_all_domains(data.get('hostname', default=None))
# user register from endpoint
elif data.get('section', default=None) == "directory" and \
data.get('action', default=None) == "sip_auth":
get_user_info(data)
else:
domain = get_object_or_404(fm.PBXDomain, name=data.get('domain'))
user = get_object_or_404(fm.PBXUser, user_id=data.get('user'), pbx_domain=domain)
return render_to_response('user.xml', {'user': user, 'data': data})
Ошибка:
AttributeError at /pbx/directory/
'QueryDict' object has no attribute 'method'
./pbx/views.py in get_user_info
if request.method == "GET":
UPDATE2: я уменьшил запрос
AttributeError at /pbx/directory/
'QueryDict' object has no attribute 'method'
Request Method: GET
Request URL: http://37.18.2.18:8010/pbx/directory/?section=directory&action=sip_auth
Django Version: 1.7.1
Exception Type: AttributeError
Exception Value:
'QueryDict' object has no attribute 'method'
Exception Location: ./pbx/views.py in get_user_info, line 47
Python Executable: /usr/local/bin/uwsgi
Невозможно ответить на этот вопрос, не видя кода. –
Views.py Защиту get_user_info (запрос): если Len (request.GET): данных = request.GET еще: данных = request.POST urls.py urlpatterns = модели ('', url (r'directory/$ ', pv.get_user_info,) ) –
Не помещайте его в комментарии, где невозможно прочитать, отредактировать вопрос и поместить его туда. И покажите * полный * вид, плюс * полную * ошибку и трассировку. –