Запрос Django POST возвращает NONE
Итак, я ищу решение уже около недели Мне просто нужны данные из скрытой метки в форме, что не должно быть проблемой, но вместо данных из метки я просто получаю 'NONE'
Шаблон (форма):
{% for Gerecht in Gerechten %}
<form method="POST">
{% csrf_token %}
</section>
<section class="u-clearfix u-custom-color-2 u-valign-middle u-section-2" id="sec-a9e5">
<div class="u-clearfix u-gutter-0 u-layout-wrap u-layout-wrap-1">
<div class="u-layout" style="">
<div class="u-layout-row" style="">
<div class="u-align-left u-container-style u-image u-layout-cell u-left-cell u-shading u-size-30 u-size-xs-60 u-image-1" src="" data-image-width="4880" data-image-height="3253" style=" background-image: linear-gradient(0deg, rgba(0,0,0,0.25), rgba(0,0,0,0.25)), url('{% static '/img/{{ Gerecht.afbeelding }}' %}')">
<div class="u-container-layout u-container-layout-1" src=""></div>
</div>
<div class="u-align-left u-container-style u-custom-color-1 u-layout-cell u-right-cell u-size-30 u-size-xs-60 u-layout-cell-2">
<div class="u-container-layout u-container-layout-2">
<h2 class="u-text u-text-default u-text-white u-text-1"> {{ Gerecht.naam }}</h2>
<p class="u-text u-text-default u-text-white u-text-2">Duur: {{ Gerecht.duur }} u </p>
<input type="submit" value="ga naar gerecht" class="u-active-custom-color-3 u-align-left u-border-1 u-border-active-custom-color-3 u-border-hover-custom-color-3 u-border-white u-btn u-btn-round u-button-style u-hover-custom-color-3 u-none u-radius-12 u-text-active-white u-text-hover-white u-btn-2" name="btnZieRecept">
<label name="id" style="display: none;" value="{{ Gerecht.id }}">{{ Gerecht.id }}</label>
</div>
</div>
</div>
</div>
</div>
</section>
</form>
{% endfor %}
Мой views.py:
if request.POST.get('btnZieRecept'):
PK = request.POST.get('id')
logging.basicConfig(level=logging.NOTSET)
logging.debug(request.POST.get('id'))
return redirect('GerechtPreview', PK=PK)
Здесь PK=None и я не знаю почему
def GerechtPreview(request, PK):
obj = Gerecht.objects.get(pk=PK)
ingList=[]
for f in obj.bijIngridiënten:
ingList.append(f)
for f in obj.Hoofdingridiënten:
ingList.append(f)
return render(request, 'GerechtPreview.html', {"obj":obj, "ingList":ingList})
Мой urls.py:
path('Gerechten.html', views.Gerechten, name="Gerechten.html")
re_path(r'^GerechtPreview.html/(?P<PK>\w+)/$', views.GerechtPreview, name="GerechtPreview"),
У кого-нибудь есть идеи?
- Не похоже, что вы используете какие-либо формы Django в своем шаблоне. Если ваша форма основана на модели, я бы передал "ModelForm" в ваш контекст через представление.
- Скрытое поле в форме обычно выглядит так:
<input type="hidden" name="csrfmiddlewaretoken" value="HVjtndYO...1DIkUex7">
Вы должны быть в состоянии увидеть пример этого на вашей текущей форме, если вы просмотрите HTML (из-за {% csrf_token %}
)
Я ни в коем случае не эксперт по HTML; я никогда не видел, чтобы это делалось через тег <label>
, но, возможно, вы сможете. Я бы просто рекомендовал попробовать сделать это с помощью <input type="hidden"
и дать ему имя и значение, и посмотреть, будет ли это передано в запросе POST
.