表单字段未显示在模板中
Form Field not displaying in Template
我是 Django 的新手,在使用表单时遇到了一些麻烦。我正在尝试显示单个文本输入,以便用户可以输入他们的 phone 号码,该号码将发送到我的电子邮件。我实际上打算将它存储在 postgre 数据库中,但想先了解基础知识。正在显示提交按钮,但没有显示文本输入字段。我尝试将 forms.py 放入 views.py 以查看 PhoneForm() 函数和文件是否未导入,但没有做任何事情。
views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail
from .forms import PhoneForm
# Create your views here.
def index(request):
# Render the index.html template with a context dictionary
return render(request, "index.html")
def get_number(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
#create a 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())
编辑:添加 urls.py(应用程序中的那个)
from django.conf.urls import include, url
from django.contrib import admin
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^$', views.get_number, name='get_number'),
]
在 index.html
中从 {{form}} 更改为 {{form.phone_form}}
urls.py
中的两个 url 具有相同的表达式 r'^$'
并且 django 会按顺序查找它们,因此第一个(索引)将始终被选中。这链接到索引视图而不是 get_number 视图。这意味着表单未传递到模板并且表单不显示。
要解决此移动 url(r'^$', get_number),
到 'urlpatterns' 的顶部。
我是 Django 的新手,在使用表单时遇到了一些麻烦。我正在尝试显示单个文本输入,以便用户可以输入他们的 phone 号码,该号码将发送到我的电子邮件。我实际上打算将它存储在 postgre 数据库中,但想先了解基础知识。正在显示提交按钮,但没有显示文本输入字段。我尝试将 forms.py 放入 views.py 以查看 PhoneForm() 函数和文件是否未导入,但没有做任何事情。
views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail
from .forms import PhoneForm
# Create your views here.
def index(request):
# Render the index.html template with a context dictionary
return render(request, "index.html")
def get_number(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
#create a 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())
编辑:添加 urls.py(应用程序中的那个)
from django.conf.urls import include, url
from django.contrib import admin
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^$', views.get_number, name='get_number'),
]
在 index.html
中从 {{form}} 更改为 {{form.phone_form}}urls.py
中的两个 url 具有相同的表达式 r'^$'
并且 django 会按顺序查找它们,因此第一个(索引)将始终被选中。这链接到索引视图而不是 get_number 视图。这意味着表单未传递到模板并且表单不显示。
要解决此移动 url(r'^$', get_number),
到 'urlpatterns' 的顶部。