在zinnia中为视图函数-basic python创建一个入口对象

时间:2012-09-23 01:19:02

标签: python django zinnia zinnia-entry

有人可以帮我向我解释以下页面 http://nullege.com/codes/search/zinnia.models.Entry.objects.create

如何在zinnia中使用form.html文件和django中的视图函数创建条目

我知道这是基本的python游戏类

可以在这里找到hellow世界 http://django-blog-zinnia.com/blog/

1 个答案:

答案 0 :(得分:0)

关于你的第一个问题:

params = {'title': 'My entry 1', 'content': 'My content 1',
          'tags': 'zinnia, test', 'slug': 'my-entry-1',
          'status': PUBLISHED}
self.entry_1 = Entry.objects.create(**params)
self.entry_1.authors.add(self.authors[0])
self.entry_1.categories.add(*self.categories)
self.entry_1.sites.add(*self.sites)

这里Entry.objects.create(**params)相当于 `Entry.objects.create(title='My entry 1', content='My conten 1', tags='zinnia, test', slug='my-entry-1', status='PUBLISHED'), 这将创建一个标题为“我的条目1”的新条目和内容“我的内容1” 并保存到数据库中。基本入口类看起来像这样:

class EntryAbstractClass(models.Model):
    """Base Model design for publishing entries"""
    STATUS_CHOICES = ((DRAFT, _('draft')),
                      (HIDDEN, _('hidden')),
                      (PUBLISHED, _('published')))

    title = models.CharField(_('title'), max_length=255)

    image = models.ImageField(_('image'), upload_to=UPLOAD_TO,
                              blank=True, help_text=_('used for illustration'))
    content = models.TextField(_('content'))
    excerpt = models.TextField(_('excerpt'), blank=True,
                                help_text=_('optional element'))

    tags = TagField(_('tags'))
    categories = models.ManyToManyField(Category, verbose_name=_('categories'),
                                        related_name='entries',
                                        blank=True, null=True)
    related = models.ManyToManyField('self', verbose_name=_('related entries'),
                                     blank=True, null=True)

    slug = models.SlugField(help_text=_('used for publication'),
                            unique_for_date='creation_date',
                            max_length=255)

    authors = models.ManyToManyField(User, verbose_name=_('authors'),
                                     related_name='entries',
                                     blank=True, null=False)

所以像self.entry_1.authors.add(self.authors[0]这样的行会有关系 self.athors[0]self.entry_1ManyToManyField

至于你的第二个问题,是的,你可以创建一个form.html和一个视图 函数添加一个新条目,但百日草设计用于Django 用于管理内容的管理界面。它也会让你的生活更轻松。至 使用它,您需要在'django.contrib.admin',中启用INSTALLED_APPS 您的settings.py以及urls.py个文件。

启用Django管理员后,您只需转到example.com/admin/即可 创建新条目。


现在,如果由于某种原因你没有或不能使用Django管理员,这就是什么 views.py似乎要添加新条目:

#views.py
from . import forms as entryform
from zinnia.models.entry import Entry

def add_entry(request):
    form = entryform.EntryForm(request.POST or None)
    if not (request.method == 'POST' and form.is_valid()):
        return render_to_response("forms.html", {'form': form})
    title = request.POST['title']
    content = request.POST['content']
    #...many more..
    Entry.objects.create(title=title, content=content)
    return render_to_response('success.html', {'form': form,})

请注意,您还需要创建forms.py来验证提交的表单。

至于你的forms.html,你需要写一个包含所有内容的表单 您需要的输入,例如“标题”和“内容”,并将其POST到此处 add_entry查看。