Найти - Пользователи
Полная версия: Нубский вопрос о передачи перeменных
Начало » Django » Нубский вопрос о передачи перeменных
1 2
eth
Часть метода во вью
    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 если его нет в кортеже возвращаемых значений?
Razor
eth
Как сюда попадает new_comment если его нет в кортеже возвращаемых значений?
Вот так:
eth
CommentForm(data=request.POST)
Данные, введенные в форму, передаются через класс формы.
eth
Я что-то вообще запутлася сейчас, ну класс формы присваивается comment_form = CommentForm(data=request.POST), а new_comment то никак не присваивается comment_form? Она же просто в ифе создается и там остается?
Razor
Я в Django не силен, но во Flask я бы ответил так:

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

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

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

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

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

Это я уже что-то запутался. То ли вы меня не понимаете, то ли мы говорим о разном.
Я просто что-то фигово понимаю динамическую типизацию, в new_comment будет булевый результат метода comment_form.save(commit=False) ? Откуда там вся модель формы?
FishHook
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
eth
FishHook
О майгад, мой фейл согласен, но как-бы чисто интуитивно там булевый тип ждешь. self.instance это this?
FishHook
eth
self.instance это this?
какой еще this, Господь с вами!
eth
FishHook
какой еще this, Господь с вами!
Ну екземпляр модели для формы, не?
FishHook
eth
Ну екземпляр модели для формы, не?
Это экземпляр модели для формы, но при чем тут this? Дай угадаю - JavaScript ваш первый и единственный известный язык программирования?
Остается вопрос, если self.instance это this, то что тогда такое self?
Вам бы питон подучить.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB