首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django脆表单-在home.html中创建一个表单并得到一个错误

Django脆表单-在home.html中创建一个表单并得到一个错误
EN

Stack Overflow用户
提问于 2017-10-15 17:11:03
回答 1查看 1.1K关注 0票数 1

我已经从一个教程(https://godjango.com/29-crispy-forms/)构建了一个脆表单,并且正在收到一个错误,我相信这意味着我需要在urls.py中定义一个URL。我还意识到可能有不止一个问题在进行--我仍然在努力使这个问题发挥作用,并将继续研究它,但我对Django和Python还很陌生,所以在这方面做了很多努力。感激地收到任何指导。

以下是错误:

代码语言:javascript
运行
复制
Failed lookup for key [form] in "[{'True': True, 'False': False, 'None': None}, {}, {}, {'view': <django.views.generic.base.TemplateView object at 0x10faa03c8>, 'home_url': '/'}]"

供参考的文件如下:

forms.py

代码语言:javascript
运行
复制
from django import forms

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout, Field
from crispy_forms.bootstrap import (
    PrependedText, PrependedAppendedText, FormActions)

class SimpleForm(forms.Form):
    username = forms.CharField(label="Username", required=True)
    password = forms.CharField(
        label="Password", required=True, widget=forms.PasswordInput)
    remember = forms.BooleanField(label="Remember Me?")

    helper = FormHelper()
    helper.form_method = 'POST'
    helper.add_input(Submit('login', 'login', css_class='btn-primary'))

class CartForm(forms.Form):
    item = forms.CharField()
    quantity = forms.IntegerField(label="Qty")
    price = forms.DecimalField()

    helper = FormHelper()
    helper.form_method = 'POST'
    helper.layout = Layout(
        'item',
        PrependedText('quantity', '#'),
        PrependedAppendedText('price', '$', '.00'),
        FormActions(Submit('login', 'login', css_class='btn-primary'))
    )


class CreditCardForm(forms.Form):
    fullname = forms.CharField(label="Full Name", required=True)
    card_number = forms.CharField(label="Card", required=True, max_length=16)
    expire = forms.DateField(label="Expire Date", input_formats=['%m/%y'])
    ccv = forms.IntegerField(label="ccv")
    notes = forms.CharField(label="Order Notes", widget=forms.Textarea())

    helper = FormHelper()
    helper.form_method = 'POST'
    helper.form_class = 'form-horizontal'
    helper.label_class = 'col-sm-2'
    helper.field_class = 'col-sm-4'
    helper.layout = Layout(
        Field('fullname', css_class='input-sm'),
        Field('card_number', css_class='input-sm'),
        Field('expire', css_class='input-sm'),
        Field('ccv', css_class='input-sm'),
        Field('notes', rows=3),
        FormActions(Submit('purchase', 'purchase', css_class='btn-primary'))
    )

views.py

代码语言:javascript
运行
复制
from django.views.generic import FormView
from forms import SimpleForm, CreditCardForm, CartForm

class MainView(FormView):
    template_name = "pages/home.html"
    form_class = SimpleForm

urls.py

代码语言:javascript
运行
复制
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.views.generic import TemplateView
from django.views import defaults as default_views

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'),
    url(r'^page/$', TemplateView.as_view(template_name='pages/page.html'), name='page'),

    # Django Admin, use {% url 'admin:index' %}
    url(settings.ADMIN_URL, admin.site.urls),

    # User management
    url(r'^users/', include('base_django_template.users.urls', namespace='users')),
    url(r'^accounts/', include('allauth.urls')),

    # Your stuff: custom urls includes go here


] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if settings.DEBUG:
    # This allows the error pages to be debugged during development, just visit
    # these url in browser to see how these error pages look like.
    urlpatterns += [
        url(r'^400/$', default_views.bad_request, kwargs={'exception': Exception('Bad Request!')}),
        url(r'^403/$', default_views.permission_denied, kwargs={'exception': Exception('Permission Denied')}),
        url(r'^404/$', default_views.page_not_found, kwargs={'exception': Exception('Page not Found')}),
        url(r'^500/$', default_views.server_error),
    ]
    if 'debug_toolbar' in settings.INSTALLED_APPS:
        import debug_toolbar
        urlpatterns = [
            url(r'^__debug__/', include(debug_toolbar.urls)),
        ] + urlpatterns

和home.html一节

代码语言:javascript
运行
复制
<section id="contact" class="contact">
  <div class="container">
    <div class="row">

      {% crispy form %}

    </div>
  </div>
</section>

我在crispy_forms_tags的顶部有{% load home.html %}。

EN

Stack Overflow用户

回答已采纳

发布于 2017-10-15 17:25:34

您的route '/'似乎找不到任何form.You,可以通过更改TemplateView类和放置MainView类来尝试。

代码语言:javascript
运行
复制
urlpatterns = [
    url(r'^$', MainView.as_view(), name='home'),
]

然后不需要定义模板名,因为它是在MainView类上定义的。希望能帮上忙。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46757725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档