__init__() принимает 1 позиционный аргумент, но дано 2 Ошибка в очень простой функции формы

У меня есть эта очень простая форма, но я продолжаю получать сообщение об ошибке

init() takes 1 positional argument but 2 were given

Вот мой код:

модели.py

class Feedback(models.Model):
    name = models.CharField(max_length=100)
    contact = models.CharField(max_length=12)
    title = models.CharField(max_length=120)
    description = models.TextField(blank=True, null=True)
    summary = models.TextField(blank=False, null=False)
    created_on = models.DateTimeField(auto_now_add=True)

формы.py

class Feedback_form(BSModalForm):
    class Meta:
        model = Feedback
        fields = ['name', 'contact', 'title', 'description', 'summary']

просмотры.py

@login_required
class Feedback_Create(BSModalCreateView):
    template_name = 'classroom/teachers/feedback.html'
    form_class = Feedback_form
    success_message = 'Success: Sign up succeeded. You can now Log in.'
    success_url = reverse_lazy('classroom:feedback_form')

urls.py

path('feedback/', teachers.Feedback_Create, name='feedback'),

обратная связь.html

{% load widget_tweaks %}

<form method = "post" action = "">
  {% csrf_token %}

  <div class = "modal-header">
    <h3 class = "modal-title">Create Book</h3>
    <button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close">
      <span aria-hidden = "true">&times;</span>
    </button>
  </div>

  <div class = "modal-body">

    <div class = "{% if form.non_field_errors %}invalid{% endif %} mb-2">
      {% for error in form.non_field_errors %}
        {{ error }}
      {% endfor %}
    </div>

    {% for field in form %}
      <div class = "form-group">
        <label for = "{{ field.id_for_label }}">{{ field.label }}</label>
        {% render_field field class = "form-control" placeholder=field.label %}
        <div class = "{% if field.errors %} invalid{% endif %}">
          {% for error in field.errors %}
            <p class = "help-block">{{ error }}</p>
          {% endfor %}
        </div>
      </div>
    {% endfor %}
  </div>

  <div class = "modal-footer">
    <button type = "button" class = "submit-btn btn btn-primary">Create</button>
  </div>

</form>

Я не понимаю, что я делаю неправильно здесь. Я установил библиотеку просто отлично и добавил соответствующее имя в файле install_apps в файле настроек. Я продолжаю получать ошибку:

TypeError at /shipper/feedback/ init() takes 1 positional argument but 2 were given Request Method: GET Request URL: http://127.0.0.1:8000/shipper/feedback/ Django Version: 2.0.1 Exception Type: TypeError Exception Value:
init() takes 1 positional argument but 2 were given Exception Location: C:\Users\idadarklord\AppData\Local\Programs\Python\Python37\lib\site-packages\django\contrib\auth\decorators.py in _wrapped_view, line 21

Я пытаюсь установить простую всплывающую форму обратной связи, как показано здесь.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
501
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете login_required в представлении на основе классов, если вы хотите сделать это, вам нужно использовать method_decorator. Взгляните на документы https://docs.djangoproject.com/en/2.2/topics/class-based-views/intro/#decorating-the-class

И в вашем urls.py вам нужно вызвать .as_view() для представлений на основе классов.

  path('feedback/', teachers.Feedback_Create.as_view(), name='feedback'),

Я только что удалил декоратор, но все равно получаю ту же ошибку.

Ramesh Sharma Yadav 19.06.2019 15:11

@RohitKumar Обновил мой ответ, который вы забыли вызвать as_view в своем классе. Кроме того, более pythonic/соглашение не использовать подчеркивание в именах ваших классов FeedbackCreate

Krukas 19.06.2019 15:15

Я тоже пробовал это, но когда я использую as_view(), это дает мне ошибку, в которой говорится, что вместо 1 были заданы 2 аргумента.

Ramesh Sharma Yadav 19.06.2019 15:20

Вы сделали оба изменения? Потому что, судя по тому, что вы показываете, эти изменения должны это исправить. Также взгляните на отмеченный повторяющийся ответ (stackoverflow.com/questions/53572251/…)

Krukas 19.06.2019 15:28

Другие вопросы по теме