Python django表单的输入字段未显示
我是Django的新手,正在关注youtube上CodingTreenturers的try Django 1.10系列,因此,我无法解决这个问题。我只看到提交按钮,而输入字段没有显示。下面是我正在编写的代码 forms.pyPython django表单的输入字段未显示,python,django,django-forms,django-templates,Python,Django,Django Forms,Django Templates,我是Django的新手,正在关注youtube上CodingTreenturers的try Django 1.10系列,因此,我无法解决这个问题。我只看到提交按钮,而输入字段没有显示。下面是我正在编写的代码 forms.py from django import forms class SubmitUrlForm(forms.Form): url = forms.CharField(label="Submit Url") views.py from .forms import Su
from django import forms
class SubmitUrlForm(forms.Form):
url = forms.CharField(label="Submit Url")
views.py
from .forms import SubmitUrlForm
def home_view_fbv(request, *args, **kwargs):
if request.method == 'POST':
print(request.POST)
return render(request, "app/home.html", {})
class HomeView(View):
def get(self, request, *args, **kwargs):
the_form = SubmitUrlForm()
context = {
"title": "Submit Url",
"form": the_form
}
return render(request, "app/home.html", context)
def post(self, request, *args, **kwargs):
form = SubmitUrlForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
return render(request, "app/home.html", {})
app/home.html
<div style= 'width: 800px; margin: 0 auto;'>
<h1> {{ title }} </h1>
<form method = 'POST' action = '.'> {% csrf_token %}
{{form.as_p}}
<input type= 'submit' value= 'Shorten' >
</form>
</div>
将HomeView更改为此
from django.views import View
from django.http import HttpResponseRedirect
from .forms import SubmitUrlForm
class HomeView(View):
form_class = SubmitUrlForm
context = {
"title": "Submit Url",
"form": form_class
}
template_name = 'app/home.html'
def get(self, request, *args, **kwargs):
return render(request, self.template_name, context)
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
print(form.cleaned_data)
return HttpResponseRedirect('/success/')
return render(request, self.template_name, context)
共享您的模型。pyI也添加了模型文件,但是,根据教程,没有对其进行任何更改,而且它以前工作得很好。这似乎是个窍门,谢谢你,但是,它不包括要显示的标题部分,你能把这个也包括进去吗?@shrekh使用这个我已经更新了答案。如果它解决了您的问题,请接受答案谢谢您的帮助,我面临另一个问题,我必须在get和post函数中重新声明上下文和form_类,因为否则会引发名称错误,既然它们是在同一个类中声明的,它不应该访问这两个类吗?是的,它将访问。只需更改表单_class=----和上下文={'':''}即可
from django.views import View
from django.http import HttpResponseRedirect
from .forms import SubmitUrlForm
class HomeView(View):
form_class = SubmitUrlForm
context = {
"title": "Submit Url",
"form": form_class
}
template_name = 'app/home.html'
def get(self, request, *args, **kwargs):
return render(request, self.template_name, context)
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
print(form.cleaned_data)
return HttpResponseRedirect('/success/')
return render(request, self.template_name, context)