2017-12-14 11 views
0

models.py 私はモデルすなわちForm_dbを作成して、今私は次ページのフォームフィールドの印刷方法は?

from django.db import models 
from django import forms 

# Create your models here. 


class Form_db(models.Model): 
    name = models.CharField(max_length=50) 
    email = models.EmailField(max_length=50) 
    number = models.CharField(max_length=15) 
    any_query = models.TextField(blank=True,max_length=100) 
    address = models.TextField(max_length=100,blank=True) 

    def __str__(self): # __unicode__ on Python 2 
     return self.name 

forms.py

from django import forms 
from .models import Form_db 
class Form_db_att(forms.ModelForm): 
    class Meta: 
     model = Form_db 
     fields= ['name','email','address','number','any_query'] 

views.py thanks.html情報は、テンプレートを使用していることを印刷したいです

from django.http import HttpResponseRedirect, HttpResponse, request 
    from django.shortcuts import redirect ,render 
    from .forms import Form_db_att 
    from django.utils import timezone 
    from .models import Form_db 
    # Create your views here. 

    def home(request): 
     if request.method == 'POST': 
      form = Form_db_att(request.POST) 
      if form.is_valid(): 
       model_instance = form.save(commit=False) 
       model_instance.timestamp = timezone.now() 
       model_instance.save() 
       return HttpResponseRedirect('/home/test') 
     else: 
      form = Form_db_att() 
      return render (request,'mforma/name.html',{'form':form}) 

def thanks(request): 
    form = Form_db(request.POST) 
    return render(request,'mforma/thanks.html',{'form':form}) 

thanks.html form.idはcsrfトークンを使用して値を返し、リスト形式でフィールド値を提示しています。

<form action="" method="post"> 
{{form.id}} 
</form> 

名.html

<form action="/home/thanks/" method="post" > 
    {% csrf_token %} 
    {{form.as_p}} 
<input type="submit" value="submit"> 
</form> 

mformp/urls.py

from django.contrib import admin 
from django.conf.urls import url , include 

urlpatterns = [ 
    url('admin/', admin.site.urls), 
    url('home/',include('mforma.urls')), 
] 

mformp/urls.py

from django.conf.urls import url 
from . import views 
urlpatterns =[ 

    url(r'^$',views.home,name='home'), 
    url(r'^thanks/$',views.thanks,name='thanks') 
] 
+0

[CapWords](http://pep8.org/#class-names)命名規則を使用してください。あなたの 'Form_db'は' FormDb'と同じでなければなりません... –

+0

あなたのユーザを 'thanks.html'にリダイレクトしていますか? –

+0

私は情報をリダイレクトしていませんが、そのモデル情報をページhome/thanksに投稿するようにしています – chaitanya

答えて

0

保存したモデルコンテキストを使用して、form.save render thanks.htmlをレンダリングした後。このおかげページで

thanks.html

model_instance.save() 
return render(request, 'thanks.html', {'form': form}) 

だけ{{ form }}ですべてのフィールドを印刷します。

+0

はい、それは動作していますが、名前のフィールド値のみが表示されます。 – chaitanya

+0

Form_dbクラスでは、__str__を 'self.name'に覚えているので、名前フィールドだけが表示されます。 –

+0

もし 'email'を印刷したいなら、' {{model_instance.email}} 'を実行してください。 –

関連する問題