Django-Передача данных из html в python и наоборот

Index.html

<form class="grid" method="POST" action={% url 'result' %}>
   {% csrf_token %}
   <textarea name="name" /></textarea>
   <button type="submit"">Detect</button>
</form>
<label>{{name}}</label>

view.py

def result(request):
    name = request.POST['name']
    name=preprocessing(name)
    return render(
    request,
        "index.html",
        name=name
    )

urls.py

urlpatterns = [
    path("", views.homePage, name='result'),
]

я делаю сайт с использованием django, где я должен получить данные из html страницы в файл python и после получения данных я должен выполнить некоторую предварительную обработку данных. и после этого снова вернуться на ту же страницу с новой информацией, когда я нажимаю кнопку

Проблема заключается в атрибуте action в HTML, если вы видите его правильно, там должно быть "" в действии, в настоящее время они отсутствуют, так что это должно быть:

action="{% url 'result' %}"

Нет:

action={% url 'result' %}

Примечание: Вы также можете просто удалить атрибут action, так как Django по умолчанию принимает текущий маршрут страницы.

Во-вторых, ваше имя представления result в views.py и вы определяете его как homePage в urls.py, пожалуйста, посмотрите это.

Также представление должно передавать некоторый context dict так:

def result(request):
    name = request.POST['name']
    actual_name=preprocessing(name)
    return render(
    request,
        "index.html",
        {"name":actual_name}
    )

Редактирование:

Попробуйте этот urls.py:

from django.urls import path
from mywebsite import views
urlpatterns = [
    path("", views.homePage, name='home-page'),
    path("", views.result, name="result"),
]

Попробуйте этот result вид:

def result(request):
    if request.method=="POST":
        namee = request.POST['name']
        namee2 =  test_data_preprocessing(namee)
        return render(
            request,
            "index.html",
           {"name":namee2}
        )
     return render(
            request,
            "index.html"
     )

Попробуйте этот шаблон:

<form class="grid" method="POST" action="{% url 'result' %}">
   {% csrf_token %}
   <textarea name="name" /></textarea>
   <button type="submit"">Detect</button>
</form>

{% if name %}
    <label>{{ name }}</label>
{% else %}
    <p> name is not coming as it is GET request.</p>
Вернуться на верх