Здравствуйте.
В учебных целях я поставил себе следующую задачу:
Создать страницу на которой пользователь вводит свое имя в поле формы, после чего он переходит на страницу, где его приветствуют по имени. Т.е, пользователь вводит имя "Вася" и на другой странице видит приветствие "Здравствуй, Вася"
Вчерне задача решена следующим способом:
Есть вьюха Put_your_name, которая принимает имя пользователя.
def Put_your_name(request):
if request.method == 'POST':
form = NameForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/Hello_user/')
else:
form = NameForm()
return render(request, 'Put_your_name.html', {'form': form})
Эта вьюха практически полная копия примера из документации Django
Класс Django Form:
class NameForm(forms.Form):
your_name = forms.CharField(label='Введите свое имя:', max_length=20)
Есть еще одна вьюха Hello_user, которая отображает введенные данные.
def Hello_user(request):
name_of_user = request.POST['your_name']
return render(request, 'Hello_user.html', {'form_name': name_of_user})
Код самой формы на странице Put_your_name.html таков:
<form action="/Hello_user/" method="POST">
{% csrf_token %}
{{form}}
<p><input type="submit" value="Привет" /></p>
</form>
Код приветствия на странице Hello_user.html таков:
<h1>Привет, {{form_name}}</h1>
Урлы:
urlpatterns = [
url ('^name/$', Put_your_name),
url ('^Hello_user/$', Hello_user),
]
Сам вопрос:
Правильно ли все сделано? Мне кажется, я что-то упустил, или не до конца понял назначение и возможности форм.
Во вьюхе Put_your_name я просто проверяю правильность заполнения формы и все. Данные никуда не передаются. Нельзя ли данные из вьюхи Put_your_name передать в Hello_user и не брать их из request.POST['your_name']?
Хотелось бы узнать краткое и наиболее верное решение.
Заранее спасибо за ответы и ваше внимание.