2017-04-18 62 views
0

我是django框架的新手,希望將值存入數據庫。爲此,我使用post方法,但是當我檢查它正在執行其他部分。我通過了上一個問題,但仍然覺得不滿意我的情況。 守則如下: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

輸出此刻你的看法'info'衝突與您的模型形式'信息'。你應該使用'lowercase_with_underscores'例如'index','info'用於基於函數的視圖,和'CamelCase'例如'StudentInfo','Info'用於你的模型/表單類。您錯誤地使用了過時的'render_to_response',您應該使用'render(request,template_name,context)'代替。 – Alasdair

+0

我更改了模型名稱(即'StudentInfo,History'),窗體(Info),視圖(信息函數)保持不變,除了我使用渲染而不是render_to_response仍然不起作用。它仍在執行其他部分,即它很糟糕。 – user7189419

+0

如果您更改了代碼,請編輯您的問題。 – Alasdair

回答

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

您應該使用the_form而不是form,因爲這就是你所謂的info(...)

+0

我試過了不行。它不會進入if部分,因爲它正在執行其他部分 – user7189419

相關問題