无法在Django中呈现表单

时间:2018-10-27 17:14:10

标签: python django django-forms

我正在尝试在Django中导入一个简单的单字段表单,并且在YouTube上浏览了很多介绍该表单的教程视频。但是,我无法在我的网络应用程序上呈现此简单表单。我很确定自己所做的事情确实很愚蠢,但我仍然没有注意到。

我还将张贴在文件夹结构中,以便您建议我是否在错误的views.py文件中定义了类/函数。

适当的源代码如下:

earthquake / views.py文件

from django.shortcuts import render
from earthquake.forms import HomeForm
from django.views.generic import TemplateView

class HomeView(TemplateView):
    template_name = 'earthquake/home.html'

    def get(self, request, *args, **kwargs):
        form1 = HomeForm()
        argf = {
            'myform': form1
        }
        return render(request, self.template_name, argf)

forms.py

from django import forms

class HomeForm(forms.Form):
    post = forms.CharField()

home.html(摘要)

<div class="container">
    <div class="jumbotron">
        <h1>Query Form</h1>
        <p>Please Enter the parameters you want to query against the USGS Earthquake DB</p>
        <div class="container">
        <form class="" method="post" action="">
            {% csrf_token %}
            {{ myform }}
            <button type="submit" class="btn btn-success">Search</button>
        </form>
        </div>
    </div>
</div>

Django项目网址(interview.py/urls.py)

from django.contrib import admin
from django.urls import path, include
from interview.views import login_redirect
from interview import views
from django.contrib.auth.views import LoginView
from django.contrib.auth.views import LogoutView

urlpatterns = [
    path('', login_redirect, name='login_redirect'),
    path('admin/', admin.site.urls),
    path('home/', include('earthquake.urls')),
    path('login/', LoginView.as_view(template_name='earthquake/login.html'), name="login"),
    path('logout/', LogoutView.as_view(template_name='earthquake/logout.html'), name="logout"),
    path('register/', views.register, name='register'),
]

应用程序URL(面试/地震/urls.py)

from django.urls import path, include
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

文件夹结构

https://i.stack.imgur.com/zoehT.jpg

(如果您看不到图像中的最后一个条目,则是项目文件夹中存在的主要 views.py )。

以下是我当前获得的渲染的快照:

https://i.stack.imgur.com/kXR7W.jpg

1 个答案:

答案 0 :(得分:0)

我看到在您的家庭视图文件中,基于类的视图称为

HomeView(TemplateView)

然而,在您的应用程序网址中,您应该在应包含view.home的视图中添加该视图 view.HomeView

此外,这是基于分类的视图,因此您的url页面应如下所示:

from django.urls import path, include
from . import views

urlpatterns = [
    path('', views.home.as_view(), name='home'),
]

由于这是基于类的视图。

相关问题