Я прохожу учебник по 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)
Вот мои вопросы:
- что создается, когда вы пишете
article = form.save(commit=False)
и что означает аргумент (commit=False)
?
- Откуда приходит
request.user
и для чего он нужен?
- Я также мог бы использовать объяснение для
article.save()
- откуда взялась
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))