如何检索通过表单(不是通过基于模型的模型表单)在django中输入的数据

时间:2019-11-04 15:42:42

标签: django django-forms

我熟悉基于模型表单创建表单的情况,在这种情况下,我可以使用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 :(得分:0)

一种选择是将数据保存在用户会话中。 docs很好地解释了如何实现这一点。在您的情况下,将是这样的:

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

要在另一个视图中访问该会话变量,可以使用:

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