__init __ () принимает 1 позиционный аргумент, но 2 получили ошибку при использовании класса в django - PullRequest
1 голос
/ 08 июля 2019

Я узнаю о forms в django. Я создал это demo app (также добавил его в installed apps. Я получаю сообщение об ошибке.

Что я не понимаю, так это:

  1. Что делает def get(self, request):? Я не мог просто написать это как

    def demoView(request):
    form = DemoForm()
    return render(request, 'demo.html', {'form':form})
    

Какая разница между написанием class и def?

  1. Если я пойду по вышеуказанному пути, я не получу 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"),

]
...