[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 ...