今天使用Django 实现了爬虫数据在前台的数据展示。在写代码的时候,反复出现了一些错误,在这里记录下来。
由于未设置FloatField和IntegerField的括号导致字段没有在数据库中创建
/polls/models.py
错误代码:
# FloatField 是一个方法,需要有括号,不写在生成迁移文件的时候不会报错,但是也不会在数据库中生成字段
price = models.FloatField
正确代码:
# 除了FloatField之外,IntegerField也是一样的
price = models.FloatField()
在使用VSCode写代码时,提示Class 'xxx' has no 'objects' member
/polls/views.py
# 这一句会报错,告诉你Class 'Xiaoceobject' has no 'objects' member
xiaoce_list = Xiaoceobject.objects.all()
你可以忽略这个错误,你一定是安装了pylint
,但是pylint
对 Django 的支持不是很好。
在Django中使用 pymysql 时,没有必要在 init.py中写任何代码
以前在搜索的时候说,安装完pymysql
后,需要在 __init__.py
中写两行代码。具体写什么我忘记了。
PS:在Ubuntu的系统中的确不用写,但是在MacOS中的确需要这两句代码,否则在本地运行项目的时候会报错。
生成数据迁移文件的三步(主要是migrate这个英文单词记不住)
# 生成数据库的迁移文件
python manage.py makemigrations yourappname
# 使用SQL的方式查看你创建的表格,如果确认没有错误可以执行第三步
python manage.py sqlmigrate polls 0001
# 在数据库中建立新的数据模型
python manage.py migrate
怎样在Django Admin的后台中显示多行数据
一般来讲,在创建model的时候,会创建一个私有的构造函数:
def __str__(self):
# 我想默认返回的是模型中的标题
return self.title
把我的应用添加到Django Admin中后,应用界面默认显示 title 一列数据。如果要显示多列数据,可以执行一下操作:
polls/admin.py
class XiaoceAdmin(models.ModelAdmin):
# 可以使用list_display来调整 Django Admin的显示数据
list_display=('title','price','username')
admin.site.register(Xiaoceobject, XiaoceAdmin)