django复习1

settings.py中的文件路径必须是绝对路径。因为相对路径是不清楚的(one of python's philosophies)。但是我们可以通过在settings.py中添加以下代码段来让我们在settings.py中可以使用相对路径。

import os
rel = lambda *x: os.path.join(os.path.abspath(os.path.dirname(__file__)), *x) 

第二行中我们创建了一个称做rel的lambda/anonymous函数。在python中,lambda函数通常是带返回值的短短一行的函数,而它的返回值是隐式传递的。作为lambda函数定义的一部分,任意多的参数都将被储存于x数组中。

让我们来用一下上面定义的函数来设置TEMPLATE_DIRS:

TEMPLATE_DIRS = (  
    rel(‘templates’),  
)  

这样我们就将TEMPLATE_DIRS与当前项目目录中的templates子目录关联起来了。再次强调,若没有定义rel函数,在settings.py中对文件路径的设置需使用绝对路径。

from django.contrib.auth.models import User 
class Post(models.Model): 
author = models.ForeignKey(User, related_name=’posts’) 
title = models.CharField(max_length=200) 
body = models.TextField() 
pub_date = models.DateTimeField(auto_now_add=True) 
up_date = models.DateTimeField(auto_now=True) 
def __unicode__(self): 
return self.title 

在应用被装载时,它们是按照上面列出的顺序装载的。所以你自己定义的应用应该放在最后,因为它们依赖于Django内置的应用。


manage.py syncdb不会做模式迁移。这意味着syncdb只会创建数据库中不存在的表,若该表已存在,django syncdb不会做任何事。这样,在你想对model&table做出一些修改时就会出现问题了。最简单的方法是运行python manage.py reset <appname>来删除并重新创建特定应用的表,但这样你就失去了之前所存的数据。或者,目前有许多django开发者实现的第三方模式迁移的实现,这些值得注意。但到目前,官方没有相关方法。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值