django - Form Field not displaying in Template -
i'm new django , having bit of trouble forms. i'm trying display single text input users can enter phone number , sent email. i'm going have stored in postgre database want basics down first. submit button being displayed text input field isn't. tried putting forms.py inside of views.py see if phoneform() function , file wasn't importing didn't anything.
views.py
from django.shortcuts import render, redirect django.http import httpresponse, httpresponseredirect django.core.mail import send_mail .forms import phoneform # create views here. def index(request): # render index.html template context dictionary return render(request, "index.html") def get_number(request): # if post request need process form data if request.method == 'post': #create form instance form = phoneform(request.post) if form.is_valid(): cd = form.cleaned_data send_mail( cd['phone_form'], ['siteadmin@example.com'], ) return httpresponseredirect('/thanks/') else: form = phoneform() return render(request, 'index.html', {'form': form})
index.html
<form action="" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="submit" /> </form>
forms.py
from django import forms class phoneform(forms.form): phone_form = forms.charfield(widget=forms.textinput())
edit: adding urls.py (the 1 in app)
from django.conf.urls import include, url django.contrib import admin . import views urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^$', views.get_number, name='get_number'), ]
both urls in urls.py
have same expression r'^$'
, django looks them in order, therefore first 1 (index) selected. links index view not get_number view. means form not passed template , form not show up.
to solve move url(r'^$', get_number),
top of 'urlpatterns'.
Comments
Post a Comment