我是python和Django的新手。我试图显示一个显示模型中字段的表单。模型和表单是不同的应用程序。
这是我的用户模型
from django.db import models
# Create your models here.
class Users(models.Model):
first_name=models.CharField(max_length=128)
last_name=models.CharField(max_length=128)
email=models.EmailField(max_length=256,unique=True)
这是我来自registerapp的forms.py
from django import forms
from apptwo.models import Users
class NewUserForm(forms.ModelForm):
class Meta():
model = Users
fields= '__all__'
这是来自registerapp的views.py
from django.shortcuts import render
from registerapp.forms import NewUserForm
from apptwo.views import index
def register(request):
form=NewUserForm()
if request.method=="POST":
form =NewUserForm(request.POST)
if form.is_valid():
form.save(commit=True)
return index(request)
else:
print("error form invalid")
return render(request,'registerapp/register.html')
我的register.html文件
<div class="container">
<h1>Register here</h1>
<form method="POST">
{{ form.as_p }}
{%csrf_token%}
<input type="submit" class="btn btn-primary" value="submit">
</form>
</div>
这就是我得到的 register.html
请帮助我找到我的错误
答案 0 :(得分:3)
render()
方法接受context
参数,其中包含模板变量及其值的字典。您忘记使用模板上下文传递表单。您需要定义此context = {'form': form}
之类的上下文,并将其作为render's
参数传递。
def register(request):
form=NewUserForm()
if request.method=="POST":
form =NewUserForm(request.POST)
if form.is_valid():
form.save(commit=True)
return index(request)
else:
print("error form invalid")
context = {'form': form}
return render(request,'registerapp/register.html', context)