django - помогите с представлением создать статью - PullRequest
0 голосов
/ 21 августа 2011

Я прохожу учебник по django, чтобы создать вики, и я немного озадачен тем, что происходит в представлении ниже. В частности, эта часть:

if form.is_valid():
    article = form.save(commit=False)
    article.author = request.user
    article.save()
    msg = "Article saved successfully"
    messages.success(request, msg, fail_silently=True)
    return redirect(article)

Вот мои вопросы:

  1. что создается, когда вы пишете article = form.save(commit=False) и что означает аргумент (commit=False)?
  2. Откуда приходит request.user и для чего он нужен?
  3. Я также мог бы использовать объяснение для article.save()
  4. откуда взялась messages.success? 1018 *

Извините за все вопросы, но учебник немного скуден по деталям: (.

Вот модель:

class Article(models.Model):
    """Represents a wiki article"""

    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=50, unique=True)
    text = models.TextField(help_text="Formatted using ReST")
    author = models.ForeignKey(User)
    is_published = models.BooleanField(default=False, verbose_name="Publish?")
    created_on = models.DateTimeField(auto_now_add=True)
    objects = models.Manager()
    published = PublishedArticlesManager()

    def __unicode__(self):
        return self.title

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super(Article, self).save(*args, **kwargs)

    @models.permalink
    def get_absolute_url(self):
        return ('wiki_article_detail', (), { 'slug': self.slug })

Вот полный вид:

@login_required
def add_article(request):
    form = ArticleForm(request.POST or None)
    if form.is_valid():
        article = form.save(commit=False)
        article.author = request.user
        article.save()
        msg = "Article saved successfully"
        messages.success(request, msg, fail_silently=True)
        return redirect(article)
    return render_to_response('wiki/article_form.html', 
                              { 'form': form },
                              context_instance=RequestContext(request))

1 Ответ

0 голосов
/ 21 августа 2011
  1. что создается при создании статьи = form.save(commit=False) и что означает аргумент (commit=False)?Сохранение формы модели вставляет / обновляет данные в базе данных и возвращает значение модели (в данном случае экземпляр статьи).Модель формы отображает форму на модель.Однако иногда вы можете захотеть добавить некоторые дополнительные материалы, которые не приходят непосредственно из формы.Таким образом, чтобы предотвратить два обновления, вы не фиксируете базу данных, указав commit=False, изменения будут внесены в базу данных, когда вы вместо этого сделаете .save () для экземпляра.1007 * откуда и что это делает?request.user относится к текущему зарегистрированному пользователю (который делает этот запрос).
  2. Я также мог бы использовать объяснение для article.save() - вставляет / обновляет поля статьи в базе данных.
  3. откуда взялась messages.success?Структура сообщений предназначена только для передачи сообщений об ошибках / успехах / информативных сообщениях с использованием файлов cookie и сеансов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...