tarlis
@tarlis
Student

Как получить доступ к данным запитым пользователем в форму?

Не понимаю как получить данные, которые я собрал с форм?
В документации пример, как я понимаю в HttpResponseRedirect, вместо /thanks/ должна быть ссылка куда я перенаправляю данные пришедшие через request.POST из form. Но я же не передаю саму переменную, просто делаю перенаправление? Как мне в новом шаблоне (/thanks/) вывести эти данные из форм - в urls вызывать другую функцию, но как ей передать данные из форм, её область видимости ограничена её же пределами?

view.py
from .forms import NameForm

def get_name(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = NameForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')
    else:
        form = NameForm()
    return render(request, 'name.html', {'form': form})


Прошу прощения если вопросы поставлены глупо, первый язык для ВП который начал изучать. Заранее благодарен :)

Формы строятся на основе form.Form
  • Вопрос задан
  • 355 просмотров
Решения вопроса 1
FuN_ViT
@FuN_ViT
веб-разработчик
Т е на сервере после получения POST вы хотите сделать редирект на другую стр/контроллер и там чтоб были данные?

Такое возможно только с сохранением данных в БД (контекст приложения тут будет не кстати).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
winordie
@winordie
Лучшая документация -- исходники
Кстати интересный вопрос. Безумная идея -- закидывать в кеш, на /thanks/ вытягивать из кеша и удалять. Вместо кеша можно в качестве буфера использовать redis.
Ответ написан
Комментировать
zigen
@zigen
if form.is_valid():
            #Сохраняем данные полученные из формы
            form.save()
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы