Arun Laxman
Arun Laxman

Reputation: 386

Input Fields not showing up from a Model in Django forms

I'm new to python and Django. I'm trying to display a form which shows the fields from a model. the model and form are different apps.

here is my Users Model

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)

here is my forms.py from registerapp

from django import forms
from apptwo.models import Users

class NewUserForm(forms.ModelForm):
    class Meta():
    model = Users
    fields= '__all__'

here is my views.py from registerapp

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')

my register.html file

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

this is what i'm getting register.html

please help me find my mistakes

Upvotes: 0

Views: 72

Answers (1)

neverwalkaloner
neverwalkaloner

Reputation: 47354

render() method takes context argument which contains dict of template's variables and its values. You forgot to pass your form with template context. You need to define context like this context = {'form': form} and pass it as render's argument.

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)

Upvotes: 2

Related Questions