django 学习笔记一

2017-10-14  本文已影响0人  wangtieshan

文件目录

path.png

manage.py

文件里面配置了 DJANGO_SETTINGS_MODULE,也就是 设置(setting.py) 的路径

settings.py

此文件中主要是做一些变量的设置,例如:

然后在其他文件中可以导入 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 都将按照你设想的那样工作。

上一篇下一篇

猜你喜欢

热点阅读