输入字段未显示在Django表单中的模型中

时间:2018-06-18 06:44:08

标签: python django

我是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

请帮助我找到我的错误

1 个答案:

答案 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)