1

我对 markdown 和 django 集成有疑问。在我安装 markdown 并将我的模型类更改为:

class Page(models.Model):
    class Translation(multilingual.Translation):
        title = models.CharField(verbose_name="Title", max_length=30,
                                 help_text="Put a title (max. 30 chars) of your page -e.g. About, CEO, Contact etc...")
        content_markdown = models.TextField(verbose_name="Markdown Content",
                                            help_text="Use Markdown syntax here.")
        content = models.TextField(verbose_name="Page content as HTML", 
                                   blank=True, null=True,
                                   help_text="You don't have to touch here.")
    slug = models.SlugField(verbose_name="Slug",
                            help_text="Put here the name of your page without space -e.g. research-development")

    class Meta:
        verbose_name_plural = "Pages"
        ordering = ['id']

    def __unicode__(self):
        return self.title

    def save(self):
        import markdown
        self.content = markdown.markdown(self.content_markdown)
        super(Page, self).save()

    def get_absolute_url(self):
        # return "/%s/%s" % (self.menu.slug, self.slug)
        return "/%s" % self.slug

我得到了这些回溯:

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  92.                 response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.py" in wrapper
  226.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py" in inner
  186.             return view(request, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/transaction.py" in _commit_on_success
  240.                 res = func(*args, **kw)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.py" in add_view
  734.                 self.save_model(request, new_object, form, change=False)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.py" in save_model
  557.         obj.save()
File "/media/DATA/Programming/pyworkspace/djangoprojects/youngjin/../youngjin/archive/models.py" in save
  37.       self.content = markdown.markdown(self.content_markdown)
File "/usr/local/lib/python2.6/dist-packages/Markdown-2.0.1-py2.6.egg/markdown/__init__.py" in markdown
  587.     return md.convert(text)
File "/usr/local/lib/python2.6/dist-packages/Markdown-2.0.1-py2.6.egg/markdown/__init__.py" in convert
  370.         if not source.strip():

Exception Type: AttributeError at /admin/archive/page/add/
Exception Value: 'NoneType' object has no attribute 'strip'

我无法真正弄清楚问题所在。任何想法?

4

1 回答 1

0

我猜想self.content_markdown在某些情况下可能是 null (但我不知道为什么,因为如果没有另外指定,默认应该是返回空字符串而不是 null 值)。

无论如何,您可以尝试以下方法来确定吗?

self.content = markdown.markdown(self.content_markdown or u'')
于 2009-09-22T15:50:10.660 回答