2

Я вижу что-то неожиданное внутри вида (режим отладчика), я не уверен, если я делаю ошибку в интерфейсе или интерфейсе:Попутный PARAMS от Angularjs Джанго

(Pdb) request.QUERY_PARAMS 
<QueryDict: {u'types': [u'Component', u'Core']}> 
(Pdb) request.QUERY_PARAMS['types'] 
u'Core' 

Я ожидая получить [u'Component', u'Core'], а не только один элемент.

В веб-интерфейсе, я использую Restangular так:

var params = { 
    types: ['Component', 'Core'] 
}; 
Restangular.all('search').getList(params)... 

код Backend только внутри ФПИ QuerySet:

def get_queryset(self, *args, **kwargs): 
    request = self.request 
    import pdb; pdb.set_trace() 
    ... 

мне нужно сделать некоторые специальные кодировки для списка Do строк или, возможно, некоторых других вопросов?

ответ

4

Вам необходимо использовать request.QUERY_PARAMS.getlist('types'), потому что request.QUERY_PARAMS AKA request.GET является django QueryDict. См. Документацию здесь: https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects

+0

Несколько связанных вопросов: если я передаю '[1,2,3]', целые числа преобразуются в строку, есть ли способ избежать этого? – WBC

+0

@WBC для Django нет способа узнать тип значения, представленного в строке запроса, чтобы они всегда были строками. Вам нужно сделать что-то вроде '[int (q) для q в request.QUERY_PARAMS.getlist ('types')]'. Вы можете создать форму Django и использовать «TypedMultipleChoiceField», но это то же самое. – rojoca

+0

Большое спасибо ... так как вы упомянули понимание списка, есть ли разница в производительности между '[int (q) для q в списке]' vs 'map (lambda x: int (x), list)'? – WBC

Смежные вопросы