Django: обновить страницу без перезагрузки - PullRequest
0 голосов
/ 06 июня 2018

Я хочу обновить свой homepage.html с помощью действия кнопки и показать какой-либо результат с сервера.Но проблема в том, что когда я нажимаю на кнопку, вся страница перезагружается.Здесь мой проект называется "T2KG".Мой тег формы выглядит следующим образом:

<form method="POST">
        {% csrf_token %}

        <center><textarea placeholder="Give a input sentence....."
      class="text" name="sent" rows="5" cols="70" font="15px arial, sans-serif" autofocus>Barack Obama born in Hawaii. Hawaii locates in USA.</textarea></center><br>
        <button type="submit" class="btn btn-primary btn-block" id="display_result">Generate Triple</button>
</form>

При поиске на многих веб-сайтах я понял, что мои view.py и urls.py неверны, а также я должен использовать AJAX.Но как реализовать в этой ситуации я не знаю.Я пытался, но не мог найти выход.В view.py я возвращаю значение следующим образом:

def result(request):
text = 'null'
if request.method == 'POST':
    form_input = Sentence(request.POST)
    if form_input.is_valid():
        text = form_input.cleaned_data['sent']
    else:
        form_input = Sentence()

triples = getTriples(text)

ent_list = entityList(text)
triples = predicateList(aggregate(triples, ent_list))
return render(request, './T2KG/homepage.html',{'triples': triples, 'json_triples': json.dumps(triples), 'text':text})

И мой urls.py:

urlpatterns = [
path('', views.set_sent, name='set_text'),
url(r'^T2KG/homepage', views.result, name='result'),]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 11 июня 2018

То, что вы ищете, это ajax-вызов для обновления данных на странице без обновления всей страницы.Для этого вам потребуется вызов javascript для отправки данных формы на сервер и получения объекта json при успешном завершении.

Вы можете написать отдельное представление для этого или обработать его путем проверки метода в том же представлении.в конце питона (я предпочитаю sep view для API).Если вы используете тот же вид, не забудьте вернуть объект JSON вместо средства визуализации шаблонов.

Что делает javascript - это просто берет данные формы с вашей веб-страницы и отправляет их по указанному URL-адресу, а затем ожидает ответа.Чтобы применить изменения, нужен ответ (# может прочитать об обещаниях js).Таким образом, для прослушивания этого вызова и возврата соответствующих данных (при успешном выполнении) необходим бэкэнд (в данном случае python).

Хорошие ссылки могут быть следующими:

https://www.geeksforgeeks.org/handling-ajax-request-in-django/

https://simpleisbetterthancomplex.com/tutorial/2016/08/29/how-to-work-with-ajax-request-with-django.html

http://www.tangowithdjango.com/book17/chapters/ajax.html

...