Я изучаю формы и хрустящие формы и не могу найти проблему с моим кодом. Я получаю сообщение об ошибке
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 получить легко усваиваемые и практические занятия по этим вопросам. Пока что сообщество действительно отличное, и я хочу встать на ноги с этим, как только смогу.