Повторное использование запроса формы django

#django #django-forms

#django #django-forms

Вопрос:

У меня есть страница, на которой отображается отчет в соответствии с обоснованными критериями, на той же странице я хотел бы создать кнопку «отправить по электронной почте», как я могу воспользоваться тем же запросом?

Ответ №1:

Вы можете создать отдельную функцию, которая обрабатывает POST запрос, а затем в вашей форме привязать action атрибут к этой функции, например:

urls.py

 urlpatterns = [
    path('handle_second_form/', views.handle_second_form, name="handle_second_form"),
]
 

views.py

 def handle_second_form(request):
    if request.method == 'POST':
        data = request.POST.get('data')
    return render(request, 'your_template.html', {'data': data})
 

Затем в вашем шаблоне добавьте вторую форму, подобную этой:

index.html

 <form action="{% url 'handle_second_form %}" method="post">
    {% csrf_token %}
    <input type="text" name="data" placeholder="Enter your data">
    <button type="submit">Submit</button>
</form>
 

Комментарии:

1. Я очень рад вашему ответу, но я не понял, как я могу использовать объект, показанный в списке, в новом методе, когда я попытался использовать синтаксис «data = request.POST.get (‘my_data’)», объект стал нулевым. Я ищу элементы и отображаю список данных, те же данные, которые я хочу отправить по электронной почте с помощью кнопки «отправить»…

2. убедитесь, что данные, которые вы пытаетесь получить по значению здесь request.POST.get('data') , имеют то же name самое в вашем поле ввода, например, здесь я получаю данные с get('data') помощью функции, и я использую name="data" в своем поле ввода формы

3. request.POST.get (‘data’) возвращает None, чего я не могу сделать, так это получить информацию с текущей страницы для выполнения действия кнопки в новом методе. «def send_report_renovacoes (запрос): если request.method == ‘GET’: data = request.POST.get (‘items’) »

4. как вы ожидаете получить POST данные запроса в GET запросе, вы должны использовать ìf request.method == 'GET'