Я узнаю о forms
в django
. Я создал это demo
app
(также добавил его в installed apps
. Я получаю сообщение об ошибке.
Что я не понимаю, так это:
Что делает def get(self, request):
? Я не мог просто написать это как
def demoView(request):
form = DemoForm()
return render(request, 'demo.html', {'form':form})
Какая разница между написанием class
и def
?
- Если я пойду по вышеуказанному пути, я не получу
input textbox
, который должен был быть там из-за {{ forms.as_p }}
. Что не так?
Я добавил соответствующие .py
файлы ниже.
views.py
from django.shortcuts import render
from django.views.generic import TemplateView
from demo.forms import DemoForm
# Create your views here.
class demoView(TemplateView):
template_name = 'demo.html'
def get(self, request):
form = DemoForm()
return render(request, self.template_name, {'form':form})
forms.py
from django import forms
class DemoForm(forms.Form):
post = forms.CharField()
demo.html
<!DOCTYPE html>
{% extends 'base.html' %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% block content %}
<div class="container">
<h1>DEMO</h1>
<form method="POST">
{% csrf_token %}
{{ forms.as_p }}
<button type="submit">SUBMIT</button>
</form>
</div>
{% endblock %}
</body>
</html>
urls.py
основного проекта
from demo.views import demoView
urlpatterns = [
path('demo/', demoView, name="demo"),
]