Как получить данные, введенные через форму (НЕ через форму модели, основанную на модели) в Django - PullRequest
0 голосов
/ 04 ноября 2019

Я знаком с созданием форм на основе форм моделей, в этом случае я могу использовать form.save() для сохранения данных в базе данных. Вопрос в том, как мне сохранить / извлечь данные этой формы, которые я не создал с помощью формы модели?

Я пробовал следующий код, но я не уверен, как получить и сохранитьданные из NameForm.

#forms.py file:

from django import forms
class NameForm(forms.Form):
    your_name = forms.CharField(label = 'your name', max_length = 100)

# views.py file

from django.shortcuts import render, redirect

from .forms import NameForm

def home(request):
    return render(request, 'meal_plans/home.html')

def name(request):
    if request.method != 'POST':
        form = NameForm()
    else:
        form = NameForm(data=request.POST)
        if form.is_valid():
            your_name = form.cleaned_data['your_name']
            return redirect('meal_plans:home')

    return render(request, 'meal_plans/name.html', {'form': form})

# name.html template

<form action="{% url 'meal_plans:home' %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit">
</form

1 Ответ

0 голосов
/ 04 ноября 2019

Один из вариантов - сохранить данные в сеансе пользователя. docs довольно хорошо объясняют, как это реализовать. В вашем случае это будет примерно так:

if form.is_valid():
    request.session['your_name'] = form.cleaned_data['your_name']
    ...

Чтобы получить доступ к этой переменной сеанса в другом представлении, вы должны использовать:

your_name = request.session.get('your_name')
...