专栏首页码生django 学习笔记一

django 学习笔记一

文件目录

path.png

manage.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 都将按照你设想的那样工作。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • django 学习笔记四

    onety码生
  • webstorm reactnative 代码提示 功能增强

    file -> import settings -> ReactNative.jar

    onety码生
  • StackNavigator in react-navigation disable swip to back 禁止侧滑返手势

    onety码生
  • Extjs form 组件

    1.根类 Ext.form.Basic 提供了,表单组件,字段管理,数据验证,表单提交,数据加载的功能 2.表单的容器 Ext.form.Panel 容器自动关...

    用户1197315
  • 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)

    WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素。若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了。

    周小董
  • 一文详述Attention最新进展

    动机:只给定物体类别的话,网络往往只关注最具有判别性的信息,无法挖掘到整个物体信息。能否设计一种drop操作,每次迭代时drop最具判别性的信息,强迫网络关注其...

    深度学习技术前沿公众号博主
  • QQ可以注销你会注销吗?他们是这么说的.

    在当时要是有个诺基亚,你可就非常厉害了,天天想着挂等级,加好友,不管认不认识的都加一遍,偷菜抢车那是非常火的了!

    IT小侠公社
  • 前端知识普及之页面加载

    如果大家想继续看下面的内容的话,有一个要求,就是回答我一个问题: 你这样写过代码吗? window.onload = function(){ $(".g...

    前朝楚水
  • ndn挖坑记(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    Enterprise_
  • 几款好用的 Google Chrome插件

    Github一个不好的地方就是代码是不能相互跳转的,所以阅读起来很累,如果我要引入一个库,那么就必须clone下来然后通过idea打开才行。这样的流程对于库的前...

    好好学java

扫码关注云+社区

领取腾讯云代金券