2014-08-29 2 views
0

Мой вид функции, что должно получить аргумент:Джанго, как послать аргументы перенаправлены зрения

def result(request, exercise_field = {"tro": "lolo"}): 
    return render(request, "lolapp/result.html", exercise_field) 

«Exercise_field» является переменная, которая принимает аргумент.

Url для этой функции:

url(r'^result/', view = views.result, kwargs = {'lolo': 'roflo'}, name = 'result') 

Как вы можете видеть, я пытался передать свой спор с помощью "kwargs" ключевого слова. Пока что - не получилось.

Ярлык, который вызывает этот взгляд:

return redirect('result', kwargs={'lol': 'rofl'}) 

И, наконец, сообщение об ошибке:

Reverse for 'result' with arguments '()' and keyword arguments '{'kwargs': {'lol': 'rofl'}}' not found. 1 pattern(s) tried: ['result/'] 

Мне нужно отправить один аргумент "Результаты" вид.

И это типичная ошибка «NoReverseMatch», но никакие решения в Интернете не работали для меня.

Что я делаю неправильно?

+0

Я считаю, проблема в URL. Мне нужно выяснить, как отправить аргумент из одного представления в другое. – 2014-08-29 06:33:49

ответ

0

Решение моей проблемы очень просто: я должен был использовать сеансы.

Информация о сессиях: http://machinesaredigging.com/2013/10/29/how-does-a-web-session-work/

Как использовать сессии в Django: https://docs.djangoproject.com/en/1.6/topics/http/sessions/

Просто хранить его в request.session [ "my_data_key"], и я хорошо идти.

запрос.session - простой словарь python.

0

может быть просто опечатка:

kwargs={'lol': 'rofl'} 

вы должны попробовать:

kwargs={'lolo': 'rofl'} 
+0

Нет. Тот же результат. – 2014-08-29 04:58:35

0
return redirect('result', kwargs={'lol': 'rofl'}) 

должен быть для kwargs:

mydict = {'lol': 'rofl'} 
return redirect('result',passdict=mydict) 

или просто вы можете сделать с аргументами:

mydict = {'lol': 'rofl'} 
return redirect('result',mydict) 
+0

Ваше предложение с помощью args помогло немного убрать эту проблему, но у меня все еще есть эта проблема. Я считаю, что проблема в URL. Я просто не знаю, как отправить аргумент из одного представления в другое. – 2014-08-29 06:36:38

0

Ваш URL-адрес не принимает никаких аргументов: вид kwargs жестко закодирован. Поэтому невозможно, чтобы любой запрос, будь то перенаправление или просто нормальный запрос, передавал любые kwargs, кроме жестко закодированных.

У вас есть различные варианты:

  • изменить шаблон URL, так что делает принимать аргументы;
  • добавить дополнительный шаблон с другими kwargs с жестким кодированием;
  • передавать данные в сеансе, а не в кваргах.
+0

Можете ли вы привести мне пример первого варианта? – 2014-08-29 18:52:53

+0

И в настоящее время я пытаюсь отправить свои данные через сеанс, как вы предложили. – 2014-08-29 23:30:41

+0

Хорошо, это работает через сеансы. Спасибо за предложение !!! – 2014-08-30 01:40:21

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