Django передача параметра из одной функции в другую
Я пытаюсь передать значение из выпадающего меню в следующую функцию
other_funtion() missing 1 required positional argument: 'descrip'
python
def Home(request):
# Description = menu_options.description()
if env('ENVIRONMENT') == "TEST":
current_user = f"{request.META['USERNAME']}"
else:
current_user = request.META['REMOTE_USER']
Description = Some_model.objects.raw(""" SELECT min(bgd.id) as id, groups, [Description]
FROM [dbo].[description] bgd
INNER JOIN [dbo].[auth_group] ag
ON bgd.groups= ag.[groups]
INNER JOIN [dbo].[auth_user_groups] aug
ON ag.id = aug.group_id
INNER JOIN [dbo].[auth_user] au
on au.id = aug.[user_id]
WHERE bgd.Status= 'Active' AND au.[username] = %s group by [Description], groups
""",[current_user])
if request.method == 'POST':
descrip = request.session.get('Description')
request.session['Description'] = descrip
other_funtion(descrip)
# request.session['Description'] = Description
print(descrip)
return {"Description":Description}
return render(request, "index.html",{"Description":Description})
def other_funtion(request):
descrip = descrip
print(descrip)
return render(request, somehtml.html, {})
html
`
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
{% for results in Description %}
<a class="dropdown-item" href="{% url 'BidderPref' %}" target="_self name="descript"
value="{{results.Description}}">{{results.Description}}
</a>
{% endfor %}
</div>
`
Ожидал, что значение пройдет, если я изменю секцию в функции открытия, но проблема осталась
def other_funtion(request, descrip)
also tried descrip = request.session['Description'] #in the section funtion is try similar with the class
Любая помощь будет очень признательна
Сначала убедитесь, что вы ПОСТИРУЕТЕ, я не могу определить это по вашему шаблону.
В вашем шаблоне есть опечатка: target="_self name="descript"
, нет закрывающей двойной кавычки для значения target
.
Внутри тела Home()
:
descrip = request.session.get('Description')
request.session['Description'] = descrip
other_funtion(descrip)
неясно, чего вы пытаетесь достичь, поскольку request.session['Description'] = descrip
является избыточным, и вы можете просто сделать:
descrip = request.session.get('Description')
other_funtion(descrip)
Также, в other_funtion()
:
def other_funtion(request):
descrip = descrip
print(descrip)
Из вашего вопроса следует, что вы поняли, что descrip
не передается, что приводит к
other_funtion() missing 1 required positional argument: 'descrip'
исключение. С сигнатурой def other_funtion(request, descrip)
вы почти у цели. Вы можете передать descrip
следующим образом:
def other_funtion(descrip):
print(descrip)
нет необходимости передавать также request
, так как вы уже назначили descrip = request.session.get('Description')
внутри Home()
.
Fixed it removed section from the first function all but the query
В html
<a class="dropdown-item" href="{% url 'BidderPref'%}?id={{results.id}}" target="_self" name="descript" value="{{results.Description}}" {{results.Description}}</a>
Вторая функция
descrip = request.GET.get('id')