POST方法未执行以填充将值保存到数据库的表单

时间:2017-04-18 16:15:05

标签: python html django database

我是django框架的新手,想要获取值并将其保存到数据库中。为此我使用post方法,但当我检查它正在执行其他部分。我在上面的问题上做了一遍,但仍然发现我的情况不满意。 代码如下:

#views.py

from django.shortcuts import render, render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from .models import StudentInfo, History
from django.shortcuts import get_object_or_404, render
from .forms import Info


def index(request):
    return HttpResponse("Hello, world")
def info(request):
    if request.method == "POST":
        the_form=Info(request.POST or None)
        context={
            "form": the_form
        }
        if form.is_valid():
            form.save()
    else:
        return HttpResponse("It sucks")
    return render(request, 'details.html', context)

#models.py

from __future__ import unicode_literals

from django.db import models

 # Create your models here.
class StudentInfo(models.Model):
        name=models.CharField(max_length=40, help_text="Enter Name")
        reg_no=models.IntegerField(help_text='Enter your reg_no',  primary_key=True)
    email=models.EmailField(help_text='Enter email')
        def __str__(self):
           return self.name

class History(models.Model):
    Reg_no=models.ForeignKey('StudentInfo', on_delete=models.CASCADE)
    date=models.DateTimeField(auto_now=True)
    def was_published_recently(self):
       return self.date >= timezone.now() - datetime.timedelta(days=1)

#forms.py


from django import forms
from .models import StudentInfo, History
class Info(forms.ModelForm):
    name= forms.CharField(label= 'Enter name')
    reg_no= forms.CharField(label= 'Enter registration no.')
    email= forms.EmailField(label= 'Enter email')
   class Meta:
        model= StudentInfo
        fields= ['name', 'reg_no', 'email',]

#details.html
<h1>Enter the details</h1>
<form action="{% url 'auto:info'  %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Go" />
</form>

1 个答案:

答案 0 :(得分:0)

if form.is_valid():
    form.save()

您应该使用the_form代替form,因为这就是您所谓的info(...)输出