Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Нубский вопрос о передачи перeменных [RSS Feed]

#1 Март 13, 2016 21:02:35

eth
Зарегистрирован: 2016-03-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

Часть метода во вью

    comments = post.comments.filter(active=True)
    if request.method == 'POST':
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():
            new_comment = comment_form.save(commit=False)
            new_comment.post = post
            new_comment.save();
    else:
        comment_form = CommentForm()
    return render(request,
        'blog/post/detail.html',
        {'post': post, 'comments': comments, 'comment_form': comment_form})
А это в хтмль
{% if new_comment %}
        <p>You comment has bin add</p>
    {% else %}
        <h2>Add new comment</h2>
        <form action="." method="post">
        {{ comment_form.as_p }}
        {% csrf_token %}
        <p><input type="submit" value="Add comment"></p>
        </form>
    {% endif %}
Как сюда попадает new_comment если его нет в кортеже возвращаемых значений?

Отредактировано eth (Март 13, 2016 21:15:27)

Офлайн

#2 Март 14, 2016 04:06:18

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

eth
Как сюда попадает new_comment если его нет в кортеже возвращаемых значений?
Вот так:
eth
CommentForm(data=request.POST)
Данные, введенные в форму, передаются через класс формы.

Офлайн

#3 Март 15, 2016 14:29:52

eth
Зарегистрирован: 2016-03-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

Я что-то вообще запутлася сейчас, ну класс формы присваивается comment_form = CommentForm(data=request.POST), а new_comment то никак не присваивается comment_form? Она же просто в ифе создается и там остается?

Офлайн

#4 Март 15, 2016 14:37:27

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

Я в Django не силен, но во Flask я бы ответил так:

if request.method == 'POST':
Все, что написано под этим сработает только есть была отправка формы

eth
ну класс формы присваивается
В класс передаются значения из формы, а не просто присваивается класс

eth
new_comment то никак не присваивается comment_form
Как это? А вот это что?
new_comment = comment_form.save(commit=False)

Это я уже что-то запутался. То ли вы меня не понимаете, то ли мы говорим о разном.

Отредактировано Razor (Март 15, 2016 14:37:57)

Офлайн

#5 Март 15, 2016 15:15:47

eth
Зарегистрирован: 2016-03-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

Как это? А вот это что?
new_comment = comment_form.save(commit=False)

Это я уже что-то запутался. То ли вы меня не понимаете, то ли мы говорим о разном.
Я просто что-то фигово понимаю динамическую типизацию, в new_comment будет булевый результат метода comment_form.save(commit=False) ? Откуда там вся модель формы?

Офлайн

#6 Март 15, 2016 15:30:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

eth
будет булевый результат метода
А чего вы взяли, что результат булевый? Посмотрите в код метода, он же доступен.

   def save(self, commit=True):
        """
        Save this form's self.instance object if commit=True. Otherwise, add
        a save_m2m() method to the form which can be called after the instance
        is saved manually at a later time. Return the model instance.
        """
        if self.errors:
            raise ValueError(
                "The %s could not be %s because the data didn't validate." % (
                    self.instance._meta.object_name,
                    'created' if self.instance._state.adding else 'changed',
                )
            )
        if commit:
            # If committing, save the instance and the m2m data immediately.
            self.instance.save()
            self._save_m2m()
        else:
            # If not committing, add a method to the form to allow deferred
            # saving of m2m data.
            self.save_m2m = self._save_m2m
        return self.instance



Офлайн

#7 Март 15, 2016 16:45:43

eth
Зарегистрирован: 2016-03-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

FishHook
О майгад, мой фейл согласен, но как-бы чисто интуитивно там булевый тип ждешь. self.instance это this?

Офлайн

#8 Март 15, 2016 16:52:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

eth
self.instance это this?
какой еще this, Господь с вами!



Офлайн

#9 Март 15, 2016 18:10:39

eth
Зарегистрирован: 2016-03-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

FishHook
какой еще this, Господь с вами!
Ну екземпляр модели для формы, не?

Офлайн

#10 Март 15, 2016 18:26:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нубский вопрос о передачи перeменных

eth
Ну екземпляр модели для формы, не?
Это экземпляр модели для формы, но при чем тут this? Дай угадаю - JavaScript ваш первый и единственный известный язык программирования?
Остается вопрос, если self.instance это this, то что тогда такое self?
Вам бы питон подучить.



Офлайн

  • Начало
  • » Django
  • » Нубский вопрос о передачи перeменных [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version