Django博客小记

最近再次用django写了一个个人博客系统,一个**CMS**(content management system)。把其中的一些点给记下来,备忘。
**1**:静态和媒体文件配置:在settings.py中加入
    #静态文件地址映射
   STATIC_URL = 'static_files_dir' 
   STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static_files_dir').replace('\\', '/'),
)
    #媒体文件
    MEDIA_URL = 'media_files_dir'
    MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media_files_file').replace('\\', '/')
    这样这些文件才能正确加载。
**2**:在models里犯了个让人很郁闷的错误,主要是好长一段时间不知道怎么回事
        def __unicode__(self):
            return self.id
        这个id一定要把他变成str类型的。说起来都是泪啊。在**admin**后台查看相应**model**就会报错。
**3**:为了在**admin**中显示的时间好看一点。去网上找了一个有趣的东西,在相应的**admin.py**中:
        class CatagoryAdmin(admin.ModelAdmin):
            def time_format(self, Catagory):
                return Catagory.create_time.strftime("%y/%m/%d")
                time_format.admin_order_field = 'create_time'
                time_format.short_description = '创建时间'

            list_display = ('name', 'time_format')
**3**:在上传图片时,request.FILES没有数据。查文档发现
    *Note that request.FILES will only contain data if the request method was POST and the <form> that posted the request has the attribute enctype="multipart/form-data". Otherwise, request.FILES will be empty.*
    需要在**form**中添加属性**enctype="multipart/form-data"**。
**4**:get一个小技巧:
    当需要在多个页面传入一些相同的数据时,最简单粗暴的方法就是在每个**views**加入这些东西。但是既然用**Python**了,那么肯定的用一种*elegant*一点的方法。那就是添加一个*utils.py*,重写一个render.
    eg:
            def cus_render(request, template, result={}):
                if request.user.is_authenticated():
                    user = request.user
                else:
                    #display bloghost's info if not login
                    user = UserProfile.objects.get(id=2)
                    setattr(user, "is_authenticated", False)
                result['user'] = user
                result['side_catagorys'] = get_catagory()
                result['side_tags'] = get_all_tags()
                result['recent_post'] = get_recent_post()
                return render(request, template, result)
    把都需要的参数加入,然后调用这个*render*就OK。

额,暂时就记这么多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值