Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » передавать переменные из одной функции представления в другую [RSS Feed]

#1 Март 20, 2012 09:39:30

skill
От:
Зарегистрирован: 2012-03-20
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

Добрый день всем!) Как передавать переменные из одной функции представления в другую?
вот код (естественно не работающий):

это функция голосования (все ненужное убрано), она выполняется и редиректиться на фун-ию 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})
это файл urls.py

(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})
Нужно, чтобы из функции vote передавалось нужное сообщение (переменная messageVote) фун-ии battle. При этом другие функции при их вызове так же могут редиректиться на battle (зависит от выполнения функции и условия), не имея при этом переменой messageVote.



Офлайн

#2 Март 23, 2012 05:46:15

skill
От:
Зарегистрирован: 2012-03-20
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

Неужели никто не знает решения?
На другом форуме посоветовали в этом случае ввести новый класс
и хранить его объекты, потом их вызывать в шаблоне. Кто-нибудь может рассказать или навести на доки, как это сделать? Заранее спасибо.



Офлайн

#3 Март 23, 2012 05:59:22

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

Немного изврат, но если кроме редиректа других ветвений с возвратом чего-либо нет, то можнно просто делать

return battle(request, battle.id, 'battle', {'messageVote':messageVote})



Офлайн

#4 Март 23, 2012 06:00:48

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

И вообще конкретно для этой задачи лучше почитать про сообщения в джанго:
https://docs.djangoproject.com/en/1.3/ref/contrib/messages/



Офлайн

#5 Март 23, 2012 06:02:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

skill
Настоятельно рекомендую отказаться от функций представления в пользу CBV.
https://docs.djangoproject.com/en/dev/topics/class-based-views/
Многие костыли станут не нужны.



Офлайн

#6 Март 23, 2012 06:03:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

skill
Нужно, чтобы из функции vote передавалось нужное сообщение (переменная messageVote) фун-ии battle. При этом другие функции при их вызове так же могут редиректиться на battle (зависит от выполнения функции и условия), не имея при этом переменой messageVote.
def battle(request, bat_id,place, messageVote=None) ????



Офлайн

#7 Март 23, 2012 06:20:32

skill
От:
Зарегистрирован: 2012-03-20
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

Imposeren
И вообще конкретно для этой задачи лучше почитать про сообщения в джанго:
https://docs.djangoproject.com/en/1.3/r … /messages/
Вот, то что нужно=) буду читать, спасибо
FishHook
def battle(request, bat_id,place, messageVote=None) ????
Сейчас нет возможности проверить, но разве это будет работать при условии, что редирект из другой функции не будет включать в себя переменную messageVote? Разве не напишет - “нужно 3 аргумента, 2 подано”?



Офлайн

#8 Март 23, 2012 06:33:22

toxi-kb
От:
Зарегистрирован: 2012-03-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

skill
FishHook написал:

def battle(request, bat_id,place, messageVote=None) ????

Сейчас нет возможности проверить, но разве это будет работать при условии, что редирект из другой функции не будет включать в себя переменную messageVote? Разве не напишет - “нужно 3 аргумента, 2 подано”?
Насколько я понимаю - не напишет, если ничего не передано примет, что messageVote=None, по умолчанию.



Офлайн

#9 Март 23, 2012 06:36:10

skill
От:
Зарегистрирован: 2012-03-20
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

toxi-kb
skill
FishHook написал:

def battle(request, bat_id,place, messageVote=None) ????

Сейчас нет возможности проверить, но разве это будет работать при условии, что редирект из другой функции не будет включать в себя переменную messageVote? Разве не напишет - “нужно 3 аргумента, 2 подано”?
Насколько я понимаю - не напишет, если ничего не передано примет, что messageVote=None, по умолчанию.
Ок, я думал что это только для urls.py действует, а не для return…



Офлайн

#10 Март 23, 2012 07:00:20

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

передавать переменные из одной функции представления в другую

skill
Ок, я думал что это только для urls.py действует, а не для return…
Шутить изволите? В Джанге нету ничего кроме, собственно, Питона. Почему это питоновский синтаксис должен вести себя как-то иначе в Джанго-проекте?



Офлайн

  • Начало
  • » Django
  • » передавать переменные из одной функции представления в другую[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version