我是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>
答案 0 :(得分:0)
if form.is_valid():
form.save()
您应该使用the_form
代替form
,因为这就是您所谓的info(...)
输出