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>