您的位置:首页 > 编程语言 > Go语言

Django博客小记

2015-10-13 09:15 711 查看
最近再次用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)
4000
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。


额,暂时就记这么多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django cms 博客