2010-07-25 1 views
-1

У меня есть список элементов, которые выглядят следующим образом: 'Item 1', 'Item 2', 'Item 3'... с динамическим по списку.Пропустить список элементов по URL-адресу для просмотра

Вопрос: как передать эту переменную на мой взгляд?

Edit 1 Просто думал, я бы уточнить, что я пытался:

return HttpResponseRedirect(reverse('newFeatures', 
     kwargs={'stock_number': stock_number, 'new_features': new_features})) 

С new_features быть мой динамический список, и newFeatures быть вид, который начинается так:

def add_new_feature(request, stock_number, new_features): 

Не уверен, что это имеет смысл, но я надеюсь, что это поможет мне избавиться от темноты

+0

Мы говорим о передаче его на вид с URL-адреса? –

+0

Не обязательно ... позвольте мне попробовать ответ на the_void ниже и посмотреть – Stephen

ответ

0

HttpResponseRedirect просто возвращает ответ перенаправления HTTP 302, который перенаправляет на другой URL-адрес. Вы не можете отправлять какие-либо POST-данные с помощью перенаправления, поэтому, если вы хотите включить какие-либо переменные, это должно быть частью URL-адреса, к которому вы перенаправляете.

Если вы настаиваете на том, чтобы не перерабатывать список перед перенаправлением, то лучшим вариантом, вероятно, будет преобразование списка в строку и использование его в качестве параметра в URL-адресе. Функция newFeatures может затем проанализировать эту строку в списке элементов.

+0

Фактически, если 47 использует 'reverse()' для передачи 'new_features', то он использует GET, а не POST, что позволит параметрам быть изменено или прошло. –

+0

Да. Данные, отправленные через GET, являются частью URL-адреса, поэтому мы с вами думаем одно и то же. Извините, если я был двусмыслен. – BernzSed

0

Как насчет:

return HttpResponseRedirect(reverse('newFeatures', 
    kwargs={'stock_number': stock_number, 'new_features': ','.join(new_features)})) 

и:

def add_new_feature(request, stock_number, new_features_str): 
    new_features = new_features_str.split(',') 

Это предполагает, что элементы в new_features состоят только из символов, которые являются безопасными для URL-адресов, и не содержат запятые. Если это не так, вам придется выполнить экранирование какой-либо формы.

Помните, что для URL-адресов в стиле GET не рекомендуется изменять состояние своих целей. Вы должны использовать POST для этого, что помешает вам передавать параметры через URL-адрес (то есть через reverse()). Кроме того, иногда серверы имеют ограничения на длину URL-адреса, что может помешать GET.

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