[django]复制/克隆一条查询结果

复制/克隆一条查询结果,并将它插入到数据库中:

将 pk 值设为 None 即可:

blog = Blog(name='My blog', tagline='Blogging is easy')
blog.save() # post.pk == 1

blog.pk = None
blog.save() # post.pk == 2

如果该 model 继承于另一个 model 的话,必须将 pkid 的值都设为 None:

class ThemeBlog(Blog):
    theme = models.CharField(max_length=200)

django_blog ...
more ...

[django]编写作用于视图(view)的装饰器(Decorator)

本文假设读者已经知道如何编写基本的装饰器代码,否则请自行 google:“python 装饰器”and/or “python decorator”。

不带参数的装饰器

from functools import wraps


def object_does_not_exist(func):
    @wraps(func)
    def returned_wrapper(request, *args, **kwargs):
        try:
            return func(request, *args, **kwargs)
        except ObjectDoesNotExist:
            raise Http404()
    return returned_wrapper

用法:

@object_does_not_exist
def detail(request):
    pass

带参数的装饰器

  • 第一种写法:

    def object_does_not_exist(redirect=None):
        def decorator ...
more ...

[linux]解决 sendmail 错误: FEATURE() should be before MAILER()

错误详情:

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
*** ERROR: FEATURE() should be before MAILER()
*** MAILER(`local') must appear after FEATURE(`always_add_domain')*** ERROR: FEATURE() should be before MAILER()
*** MAILER(`local') must appear after FEATURE(`allmasquerade')*** ERROR: FEATURE() should be before MAILER()

解决办法:

按照提示,编辑 /etc/mail/sendmail.mc 文件 ...

more ...

[django]线上部署后,访问 admin 时出现“DoesNotExist at /admin/ Site matching query does not exist.”错误

将 django 项目部署到服务器后,访问 admin 时出现如下错误:

DoesNotExist at /admin/
Site matching query does not exist.

上网搜索后,参考 http://stackoverflow.com/questions/9736975/django-admin-doesnotexist-at-admin 修复了该问题,下面记录一下解决过程。

两种解决办法:

  • 第一种办法是:编辑 settings.py 文件,从 INSTALLED_APPS 配置项中移除 'django.contrib.sites',

  • 第二种办法:通过 python manage.py shell 为 Site model 添加一条记录(将网站的域名添加进去):

    $ python manage ...
more ...

[django] 创建后台超级用户时出现 TypeError: decode() argument 1 must be string, not None 错误

错误信息如下:

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django ...
more ...