Django Справка по формам и хрустящим формам "Не удалось найти ключ [помощник]" - PullRequest
1 голос
/ 10 января 2020

Я изучаю формы и хрустящие формы и не могу найти проблему с моим кодом. Я получаю сообщение об ошибке

  django.template.base.VariableDoesNotExist: Failed lookup for key [helper] in <ContactForm bound=False, valid=Unknown, fields=(name;email;category;subject;body)>

Мои представления:

    from django.shortcuts import render
from django.http import HttpResponseRedirect
from .models import SubID, CustID, AmountAdd
from .forms import ContactForm, SnippetForm
import stripe


def contact(request):

    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():

                name = form.cleaned_data['name']
                email = form.cleaned_data['email']

                print(name, email)

    form = ContactForm()
    return render(request, 'form.html', {'form': form})

def snippet_detail(request):

    if request.method == 'POST':
        form = SnippetForm(request.POST)
        if form.is_valid():
            form.save()

    form = SnippetForm()
    return render(request, 'form.html', {'form': form})

Мои формы:

  from django import forms
from .models import Snippet
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Submit


class ContactForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField(label='Email')
    category = forms.ChoiceField(choices=[('question', 'Question'), ('other', 'Other')])
    subject = forms.CharField(required=False)
    body = forms.CharField(widget=forms.Textarea)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper
        self.helper.form_method = 'post'

class SnippetForm(forms.ModelForm):

    class Meta:
        model = Snippet
        fields = ('name', 'body')

Мои URL-адреса настроены с включением в папку проекта в папку моего приложения:

    from django.urls import path
from . import views

urlpatterns = [
    path('STRP_Input/', views.StrpFormView),
    path('addID/', views.addID),
    path('deleteID/<int:SubID_id>/', views.deleteID),
    path('getCust/', views.getCust),
    path('', views.basere),
    path('deleteCus/', views.deleteCus),
    path('monam/', views.monam),
    path('deleteAmounts/', views.deleteAmounts),
    path('form/', views.contact),
    path('snippet/', views.snippet_detail)

]

Мои модели:

     from django.db import models

    class SubID(models.Model):
       content = models.TextField()

    class CustID(models.Model):
       cid = models.TextField()

    class AmountAdd(models.Model):
       amadd = models.TextField()

    class custinfo(models.Model):
        Subaccount = models.CharField(primary_key=True, max_length=90)
        Sub_ID = models.CharField(max_length=90)
        Amount = models.IntegerField
        Anchor_Date = models.IntegerField

    class Snippet(models.Model):
          name = models.CharField(max_length=100)
          body = models.TextField()

          def __str__(self):
             return self.name



lastly here is my template:

{% load crispy_forms_tags %}
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body style="padding: 20px;">


{% crispy form form.helper %}

</body>
</html>

Я использую Pycharm в качестве своей IDE

Я очень новичок в этом, поэтому я делаю не много понимаю в терминах " init ", " str " и "я". Если источник проблемы находится в этой области, я не смог бы поймать это.

Буду очень признателен за любые отзывы о том, куда go получить легко усваиваемые и практические занятия по этим вопросам. Пока что сообщество действительно отличное, и я хочу встать на ноги с этим, как только смогу.

...