跟着《python编程:从入门到实践》做第三个项目的时候,出现的问题:
- 首先Django安装失败,下载一半就失败了,解决方法为:Django安装失败 。换个下载源,很快就下载成功了。使用
pip install -i https://pypi.douban.com/simple django
成功! - 然后使用
django-admin.py startproject learning_log .
命令无法创建项目,并且没有任何报错,找到了解决方法,虽然不明白原因:Django无法创建项目。在虚拟环境\Scripts 路径里有django-admin.py文件,将它复制到和ll_env文件夹一个目录下,再使用创建项目命令就可以创建成功了! - 在创建应用程序时,需要保持前面打开的终端窗口运行着runserver,再打开一个新的终端窗口,切换到manager.py的目录,激活虚拟环境,使用
source ll_env/bin/activate
命令,提示错误:source不是内部或外部命令。解决方法:在ll_env文件夹里找到activate文件的具体位置,不使用source
,直接用具体路径,就可以进入虚拟环境了!即:项目所在文件夹\ll_env\Scripts\activate,回车,成功! - 添加一个新模型Entry新模型,再次使用
python manage.py makemigrations learning_logs
语句迁移数据库时报错:TypeError: init() missing 1 required positional argument :‘on_delete’,按照提示位置加上‘on_delete’参数,就可以成功地迁移数据库了。找到的解决办法是:django数据库迁移报错。
源代码块是:
class Entry(models.Model):
topic = models.ForeignKey(Topic)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'entries'
def __str__(self):
return self.text[:50] + '...'
修改之后:
class Entry(models.Model):
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'entries'
def __str__(self):
return self.text[:50] + '...'