Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django表单的输入字段未显示_Python_Django_Django Forms_Django Templates - Fatal编程技术网

Python django表单的输入字段未显示

Python 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

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