2017-04-18 9 views
0

私はdjangoフレームワークの初心者で、値を取得してデータベースに保存します。このため私はポストメソッドを使用しましたが、チェックするとelseを実行しています。私はそれについて前の質問を行ったが、依然として私の場合は不満を感じていた。 コードは以下の通りです:データベースに値を保存する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

の出力と呼ばれるものですので、あなたが代わりにformthe_formを使用する必要があります'。例えば、「lowercase_with_underscores」を使用してください。 'index'、関数ベースのビューの' info'、 'CamelCase'などです。あなたのモデル/フォームクラスの 'StudentInfo'、' Info'。不要な 'render_to_response'を間違って使用していると、代わりに' render(request、template_name、context) 'を使うべきです。 – Alasdair

+0

render_to_responseの代わりにレンダリングを使用しても、モデル名(つまり 'StudentInfo、History')、フォーム(Info)、ビュー(info関数)の変更は同じです。まだそれは他の部分を実行している、すなわちそれは吸う。 – user7189419

+0

コードを変更した場合は、質問を[編集]してください。 – Alasdair

答えて

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

それはあなたがあなたのモデルフォーム `情報を使用してビュー` info`の衝突現時点でinfo(...)

+0

私はそれが動作していない試してみました。それはもう一度elseパーツを実行しているので、if部分に入っていません – user7189419

関連する問題