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>
の出力と呼ばれるものですので、あなたが代わりに
form
のthe_form
を使用する必要があります'。例えば、「lowercase_with_underscores」を使用してください。 'index'、関数ベースのビューの' info'、 'CamelCase'などです。あなたのモデル/フォームクラスの 'StudentInfo'、' Info'。不要な 'render_to_response'を間違って使用していると、代わりに' render(request、template_name、context) 'を使うべきです。 – Alasdairrender_to_responseの代わりにレンダリングを使用しても、モデル名(つまり 'StudentInfo、History')、フォーム(Info)、ビュー(info関数)の変更は同じです。まだそれは他の部分を実行している、すなわちそれは吸う。 – user7189419
コードを変更した場合は、質問を[編集]してください。 – Alasdair