前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django 学习笔记一

django 学习笔记一

作者头像
onety码生
发布2018-11-21 10:53:57
9940
发布2018-11-21 10:53:57
举报
文章被收录于专栏:码生码生

文件目录

path.png

manage.py

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

settings.py

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

  • DEBUG 代表当前为设置环境
  • ALLOWED_HOSTS 代表能够通过的的 host
  • ROOT_URLCONF 代表 URL 的配置路径

然后在其他文件中可以导入 setting 然后读取此文件中的配置

代码语言:javascript
复制
from django.conf import settings

if settings.DEBUG:
    # Do something

完整的设置清单和各个字段的结束

联想 如果有其他的配置,也可以放在 setting 中

自定义设置要求

  • 设置名称全部是大写
  • 不要使用一个已经存在的设置

global_setting.py

目录中并没有此文件,此文件路径在 django/conf/global_setting 中

此文件为 django 的默认配置文件,如果没有设置 “配置文件路径”,则使用该默认的配置

使用

代码语言:javascript
复制
python manage.py diffsettings

命令可以查看当前设置和默认设置 global_setting 的不同


在官方文档中 也说明了其他方法设置 “设置文件的路径”

Mac 中有两种方式:

代码语言:javascript
复制
# 第一种
export DJANGO_SETTINGS_MODULE=mysite.settings 
django-admin runserver

# 第二种
django-admin runserver --settings=mysite.settings

运行

代码语言:javascript
复制
pyhon manage.py runserver 8080

如果你需改变服务器的IP地址,把IP地址和端口号放到一起。 因此若要监听所有的外网IP,请使用(如果你想在另外一台电脑上展示你的工作,会非常有用):

代码语言:javascript
复制
python manage.py runserver 0.0.0.0:8000

开始代码编辑

初始化文件目录

django 会自动帮我们初始化一个文件目录

代码语言:javascript
复制
# 当然后面的 polls 就是文件夹名称,可以更改此文件夹的名称
python manage.py startapp polls

进入 shell 命令行

代码语言:javascript
复制
python manage.py shell
配置文件中 settings INSTALLED_APPS 中增加 polls
执行命令,让 Django 知道 polls 应用
代码语言:javascript
复制
python manage.py makemigrations polls

查看改动
python manage.py sqlmigrate polls 0001

修改你的模型(在models.py文件中)。
运行python manage.py makemigrations ,为这些修改创建迁移文件
运行python manage.py migrate ,将这些改变更新到数据库中。
shell

进入 shell 命令行

代码语言:javascript
复制
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)

创建一个管理员用户

教程


注册超级管理员

代码语言:javascript
复制
python manage.py createsuperuser

启动服务器

代码语言:javascript
复制
# 后面可以跟上 IP 地址,来设置运行的IP
python manage.py runserver

# example
python manage.py runserver 0.0.0.0:8000

默认是在 http://127.0.0.1:8000/ 上面运行

后面拼接用户名称,并且登录即可登录进去

代码语言:javascript
复制
http://127.0.0.1:8000/admin/

【说明】 当 runserver 之后,所有对文件的改动,都会被服务监控到,故每次改动后保证代码正常,再 save,服务监控到改动之后,会自动重启服务,如果有错误,无法正常重启,则浏览器中界面将会报错

进入登录界面


让我们自定义的 APP 出现在界面中

站点注册一个模型,则页面中可直接显示,修改 admin.py

代码语言:javascript
复制
from .models import Question

admin.site.register(Question)

自定义管理表单

更改顺序

得来全不费工夫,只需使用admin.site.register(Question)注册Question模型,Django就能构造一个默认的表单表示。通常,你会想要自定义管理界面中表单的外观和功能。 你可以通过在注册对象的时候告知Django一些你想要的选项来完成。

让我们通过对编辑表单上的字段重新排序来看一下它是如何工作的。

【说明】以下的例子是可以更改排列顺序的例子(更改编辑界面的顺序)

代码语言:javascript
复制
在 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”字段前面

为每个字段分组
代码语言:javascript
复制
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)
增加样式
代码语言:javascript
复制
# 指定样式
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
为一个模型中关联另外一个模型
代码语言:javascript
复制
# 关联其他模型
# StackedInline 宽松型的 TabularInline 是紧凑型的
class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

# 设置要添加的关联个数
inlines = [ChoiceInline]

设置一个模型中展示的字段

代码语言:javascript
复制
    # 用来设置展示的每个模型中的内容
    # 可以增加方法名称来展示
    list_display = ('question_text', 'pub_date', 'was_published_recently')

增加一个 过滤 选项

代码语言:javascript
复制
list_filter = ['pub_date']

搜索工鞥

代码语言:javascript
复制
# 设置搜索功能,可以设置搜索的参考
    search_fields = ['question_text', 'pub_date']

设置分页功能

查看 现在又是一个好时机来告诉你变更列表界面提供方便的分页功能。 默认每页显示100条记录。 Change list pagination、search boxes、filters、date-hierarchies和column-header-ordering 都将按照你设想的那样工作。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.10.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件目录
  • manage.py
  • settings.py
  • 联想 如果有其他的配置,也可以放在 setting 中
  • global_setting.py
  • 运行
  • 开始代码编辑
    • 初始化文件目录
      • 配置文件中 settings INSTALLED_APPS 中增加 polls
        • 执行命令,让 Django 知道 polls 应用
          • shell
          • 创建一个管理员用户
          • 注册超级管理员
          • 启动服务器
          • 让我们自定义的 APP 出现在界面中
          • 自定义管理表单
            • 更改顺序
              • 为每个字段分组
                • 增加样式
                  • 为一个模型中关联另外一个模型
                  • 设置一个模型中展示的字段
                  • 增加一个 过滤 选项
                  • 搜索工鞥
                  • 设置分页功能
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档