Форум сайта python.su
Добрый день всем!) Как передавать переменные из одной функции представления в другую?
вот код (естественно не работающий):
это функция голосования (все ненужное убрано), она выполняется и редиректиться на фун-ию battle:
def vote(request,bat_id,user_id):
battle = Battle.objects.filter(id=bat_id)[0]
user = request.user
if int(user_id) == 1:
messageVote="Ваш голос отдан за {{battle.user1}}"
if int(user_id) == 2:
messageVote= "Ваш голос отдан за {{battle.user2}}"
return HttpResponseRedirect('/battle/%s/' % battle.id, {'messageVote':messageVote})
(r'^battle/(\d*)/$', 'mysite.views.battle',{'place':'battle'}),
def battle(request, bat_id,place, messageVote):
battle = Battle.objects.filter(id=bat_id)[0]
commentCount = Comment.objects.filter(battle=battle)
....
return render_to_response('battle/battle.html', {'battle':battle, 'user': user, 'place':place})
Офлайн
Неужели никто не знает решения?
На другом форуме посоветовали в этом случае ввести новый класс
и хранить его объекты, потом их вызывать в шаблоне. Кто-нибудь может рассказать или навести на доки, как это сделать? Заранее спасибо.
Офлайн
Немного изврат, но если кроме редиректа других ветвений с возвратом чего-либо нет, то можнно просто делать
return battle(request, battle.id, 'battle', {'messageVote':messageVote})
Офлайн
И вообще конкретно для этой задачи лучше почитать про сообщения в джанго:
https://docs.djangoproject.com/en/1.3/ref/contrib/messages/
Офлайн
skill
Настоятельно рекомендую отказаться от функций представления в пользу CBV.
https://docs.djangoproject.com/en/dev/topics/class-based-views/
Многие костыли станут не нужны.
Офлайн
skill
Нужно, чтобы из функции vote передавалось нужное сообщение (переменная messageVote) фун-ии battle. При этом другие функции при их вызове так же могут редиректиться на battle (зависит от выполнения функции и условия), не имея при этом переменой messageVote.
def battle(request, bat_id,place, messageVote=None) ????
Офлайн
ImposerenВот, то что нужно=) буду читать, спасибо
И вообще конкретно для этой задачи лучше почитать про сообщения в джанго:
https://docs.djangoproject.com/en/1.3/r … /messages/
FishHookСейчас нет возможности проверить, но разве это будет работать при условии, что редирект из другой функции не будет включать в себя переменную messageVote? Разве не напишет - “нужно 3 аргумента, 2 подано”?
def battle(request, bat_id,place, messageVote=None) ????
Офлайн
skillНасколько я понимаю - не напишет, если ничего не передано примет, что messageVote=None, по умолчанию.
FishHook написал:
def battle(request, bat_id,place, messageVote=None) ????
Сейчас нет возможности проверить, но разве это будет работать при условии, что редирект из другой функции не будет включать в себя переменную messageVote? Разве не напишет - “нужно 3 аргумента, 2 подано”?
Офлайн
toxi-kbОк, я думал что это только для urls.py действует, а не для return…skillНасколько я понимаю - не напишет, если ничего не передано примет, что messageVote=None, по умолчанию.
FishHook написал:
def battle(request, bat_id,place, messageVote=None) ????
Сейчас нет возможности проверить, но разве это будет работать при условии, что редирект из другой функции не будет включать в себя переменную messageVote? Разве не напишет - “нужно 3 аргумента, 2 подано”?
Офлайн
skillШутить изволите? В Джанге нету ничего кроме, собственно, Питона. Почему это питоновский синтаксис должен вести себя как-то иначе в Джанго-проекте?
Ок, я думал что это только для urls.py действует, а не для return…
Офлайн