django 学习笔记一
文件目录
path.pngmanage.py
文件里面配置了 DJANGO_SETTINGS_MODULE,也就是 设置(setting.py) 的路径
settings.py
此文件中主要是做一些变量的设置,例如:
-
DEBUG 代表当前为设置环境
-
ALLOWED_HOSTS 代表能够通过的的 host
-
ROOT_URLCONF 代表 URL 的配置路径
然后在其他文件中可以导入 setting 然后读取此文件中的配置
from django.conf import settings
if settings.DEBUG:
# Do something
联想 如果有其他的配置,也可以放在 setting 中
自定义设置要求
- 设置名称全部是大写
- 不要使用一个已经存在的设置
global_setting.py
目录中并没有此文件,此文件路径在 django/conf/global_setting 中
此文件为 django 的默认配置文件,如果没有设置 “配置文件路径”,则使用该默认的配置
使用
python manage.py diffsettings
命令可以查看当前设置和默认设置 global_setting 的不同
在官方文档中 也说明了其他方法设置 “设置文件的路径”
Mac 中有两种方式:
# 第一种
export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver
# 第二种
django-admin runserver --settings=mysite.settings
运行
pyhon manage.py runserver 8080
如果你需改变服务器的IP地址,把IP地址和端口号放到一起。 因此若要监听所有的外网IP,请使用(如果你想在另外一台电脑上展示你的工作,会非常有用):
python manage.py runserver 0.0.0.0:8000
开始代码编辑
初始化文件目录
django 会自动帮我们初始化一个文件目录
# 当然后面的 polls 就是文件夹名称,可以更改此文件夹的名称
python manage.py startapp polls
进入 shell 命令行
python manage.py shell
配置文件中 settings INSTALLED_APPS 中增加 polls
执行命令,让 Django 知道 polls 应用
python manage.py makemigrations polls
查看改动
python manage.py sqlmigrate polls 0001
修改你的模型(在models.py文件中)。
运行python manage.py makemigrations ,为这些修改创建迁移文件
运行python manage.py migrate ,将这些改变更新到数据库中。
shell
进入 shell 命令行
python manage.py shell
# 查询所有
Question.objects.all()
# 过滤查询
Question.objects.filter(id=1)
# 保存
.save()
# 过滤查询 字符串可以以 startswith 查找开头 <name>__startswith=
Question.objects.filter(question_text__startswith='what')
# 时间查询 <name>__year 过滤 年
Question.objects.get(pub_date__year=2008)
# 通过一个模型关联另外一个表,可以操纵另外一个表,并且另外一个表的外联 key 自动关联模型中的 primary key
# create 后面的参数是创建另外一个表对象的参数
# 则 choice 对象中的 id 自动关联 q 的 ID,并且 choice 数据库中自动添加一个
q.choice_set.create(choice_text="some text", votes=1)
创建一个管理员用户
注册超级管理员
python manage.py createsuperuser
启动服务器
# 后面可以跟上 IP 地址,来设置运行的IP
python manage.py runserver
# example
python manage.py runserver 0.0.0.0:8000
默认是在 http://127.0.0.1:8000/ 上面运行
后面拼接用户名称,并且登录即可登录进去
http://127.0.0.1:8000/admin/
【说明】 当 runserver 之后,所有对文件的改动,都会被服务监控到,故每次改动后保证代码正常,再 save,服务监控到改动之后,会自动重启服务,如果有错误,无法正常重启,则浏览器中界面将会报错
进入登录界面
让我们自定义的 APP 出现在界面中
站点注册一个模型,则页面中可直接显示,修改 admin.py
from .models import Question
admin.site.register(Question)
自定义管理表单
更改顺序
得来全不费工夫,只需使用admin.site.register(Question)注册Question模型,Django就能构造一个默认的表单表示。通常,你会想要自定义管理界面中表单的外观和功能。 你可以通过在注册对象的时候告知Django一些你想要的选项来完成。
让我们通过对编辑表单上的字段重新排序来看一下它是如何工作的。
【说明】以下的例子是可以更改排列顺序的例子(更改编辑界面的顺序)
在 admin.py 文件中
将admin.site.register(Question)行替换成:
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
# 将 text 放在了 date 后面,则试图上面的顺序就会更改
fields = ['pub_date', 'question_text']
admin.site.register(Question, QuestionAdmin)
无论何时,当你需要修改一个对象的管理选项的话,就按照这样的步骤来做:创建一个模型管理对象(class),然后把该对象(class名)作为第二个参数传入admin.site.register()。
上面的特定的更改,使得“Publication date”字段排在“Question”字段前面
为每个字段分组
from models import Question
class QuestionAdmin(admin.ModelAdmin):
# 没有分组的写法
# fields = ['pub_date', 'question_text']
# 是一个元组集合
# 元组中第一个是组头信息, 后面的为此组中的字段排列顺序
fieldsets = [
('pub_date info', {'fields': ['pub_date']}),
('question_text info', {'fields': ['question_text']}),
]
admin.site.register(Question, QuestionAdmin)
增加样式
# 指定样式
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
为一个模型中关联另外一个模型
# 关联其他模型
# StackedInline 宽松型的 TabularInline 是紧凑型的
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
# 设置要添加的关联个数
inlines = [ChoiceInline]
设置一个模型中展示的字段
# 用来设置展示的每个模型中的内容
# 可以增加方法名称来展示
list_display = ('question_text', 'pub_date', 'was_published_recently')
增加一个 过滤 选项
list_filter = ['pub_date']
搜索工鞥
# 设置搜索功能,可以设置搜索的参考
search_fields = ['question_text', 'pub_date']
设置分页功能
查看
现在又是一个好时机来告诉你变更列表界面提供方便的分页功能。 默认每页显示100条记录。 Change list pagination、search boxes、filters、date-hierarchies和column-header-ordering 都将按照你设想的那样工作。