Сохранение URL при обновлении содержимого страницы после отправки формы с помощью Django - PullRequest
0 голосов
/ 18 апреля 2020

Я создал форму html, используя тег <form> и не используя встроенные формы Django. Форма запрашивает имя и возраст. Что я хочу сделать, это то, что после того, как пользователь заполняет форму, URL-адрес страницы остается неизменным, а содержимое страницы изменяется на отображаемое имя и возраст. Как я могу это сделать?

<html>
<head>
	<title>Form</title>
</head>
<body>

	<form method="post" action="aftersubmit">
		{% csrf_token %}
		<input placeholder="yourname" name="name">
		<br>
		<input placeholder="your age" name="age">
		<br>
		<input type="submit" value="Submit">
	</form>
</body>
</html>
from django.shortcuts import render,redirect
# Create your views here.

def formpage(request):
    return render(request,'formhtml.html')

def aftersubmit(request):
    name = request.POST['name']
    age = request.POST['age']
    dictionary = {
    "name":name,
    "age":age
    }
    print(dictionary)
    return redirect('formpage')

Мой текущий код сохраняет URL-адрес таким же, но не изменяет содержимое страницы.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

вы можете добиться поведения в одном представлении:

проверьте тип запроса

, если это возраст и имя сообщения после чтения, как в вашем представлении aftersubmit.

def formpage(request):
    if request.method == 'POST':
        name = request.POST['name']
        age = request.POST['age']
        return render(request, 'formhtml.html', {'name': name, 'age':age}) # you could also swap the template if you want
    else:
        return render(request,'formhtml.html')

и визуализируйте представление с контекстом, содержащим имя и возраст

в шаблоне, проверьте, присутствует ли возраст и / или имя, и убедитесь, что действие указывает на то же представление

{% if name %}
{{name}}  {{age}}
{% else %}
your form you already have
{% endif %}

пример из документации: https://docs.djangoproject.com/en/3.0/topics/forms/

0 голосов
/ 18 апреля 2020

Форма action ожидает URL, поэтому {% url 'aftersubmit' %} должно работать. ОДНАКО , формы, которые не запускают refre sh ДОЛЖНЫ ИМЕТЬ ДЕЙСТВИТЕЛЬНО НЕ ДЕЙСТВУЕТ КНОПКА NOR SUBMIT , поскольку событие submit является event, ответственным за refre sh , То, что вы ищете, называется AJAX, и вы можете найти свой ответ здесь или использовать библиотеку Axios для вызова вашего представления. Использование ajax возлагает некоторую работу на интерфейс, так как теперь вам нужно вручную изменить данные на интерфейсе по сравнению с тем, что мы имели до "Refre sh".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...