1.django数据库操作---model的使用以及django自带的数据api

django中已经做了ORM,表就是一个类class,表中的一个项就是一个对象object,很好用

1.1django自动把每次你对数据库的操作(更改)看成了对model的改变,然后你生成迁移文件,执行迁移更改,使你专注与django而不是sql

上面第一步和第二部之间还要加上一步激活模型,即把model.py所在的app模块注册到settings.py中的installed_app中,体现了可插拔的应用哲学

1.2常用命令

 python manage.py makemigrations app_name
创建迁移文件 python manage.py sqlmigrate app_name 0001
0001是是生成的迁移文件名称,可能需要修改
查看生成的迁移文件,也就是查看准备执行什么sql语句 python manage.py migrate
执行迁移

1.3数据库的shell操作(非常好用)

django的shell进行了ORM很好用,而且数据库中的每一个数据项在django中不仅是一个数据项,他还被映射成一个独立的对象,他还能被加入类方法

ORM-object relation mapping

 python manage.py shell
启动django的shell,自带的shell工具,可以很容易的对数据库进行crud操作,外键检索等等,非常好用,其进行了ORM python manage.py dbshell
启动对应对应数据库的shell
 >>> from polls.models import Choice, Question

 # Make sure our __str__() addition worked.
>>> Question.objects.all()
<QuerySet [<Question: What's up?>]> # Django provides a rich database lookup API that's entirely driven by
# keyword arguments.
>>> Question.objects.filter(id=1)
<QuerySet [<Question: What's up?>]>
>>> Question.objects.filter(question_text__startswith='What')
<QuerySet [<Question: What's up?>]> # Get the question that was published this year.
>>> from django.utils import timezone
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
<Question: What's up?> # Request an ID that doesn't exist, this will raise an exception.
>>> Question.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist: Question matching query does not exist. # Lookup by a primary key is the most common case, so Django provides a
# shortcut for primary-key exact lookups.
# The following is identical to Question.objects.get(id=1).
>>> Question.objects.get(pk=1)
<Question: What's up?> # Make sure our custom method worked.
>>> q = Question.objects.get(pk=1)
>>> q.was_published_recently()
True # Give the Question a couple of Choices. The create call constructs a new
# Choice object, does the INSERT statement, adds the choice to the set
# of available choices and returns the new Choice object. Django creates
# a set to hold the "other side" of a ForeignKey relation
# (e.g. a question's choice) which can be accessed via the API.
>>> q = Question.objects.get(pk=1) # Display any choices from the related object set -- none so far.
>>> q.choice_set.all()
<QuerySet []> # Create three choices.
>>> q.choice_set.create(choice_text='Not much', votes=0)
<Choice: Not much>
>>> q.choice_set.create(choice_text='The sky', votes=0)
<Choice: The sky>
>>> c = q.choice_set.create(choice_text='Just hacking again', votes=0) # Choice objects have API access to their related Question objects.
>>> c.question
<Question: What's up?> # And vice versa: Question objects get access to Choice objects.
>>> q.choice_set.all()
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>
>>> q.choice_set.count()
3 # The API automatically follows relationships as far as you need.
# Use double underscores to separate relationships.
# This works as many levels deep as you want; there's no limit.
# Find all Choices for any question whose pub_date is in this year
# (reusing the 'current_year' variable we created above).
>>> Choice.objects.filter(question__pub_date__year=current_year)
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]> # Let's delete one of the choices. Use delete() for that.
>>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
>>> c.delete()

1.3常用的ORM之后的函数(在django中的shell运行)

class.objects.get()/filter(xxx__startwith='')/all()

q.choice_set.all()查找外键是q的所有对象

q.choice_set.count()对上一个计数

q.delete()

更多用法见文档

https://docs.djangoproject.com/zh-hans/2.1/ref/models/relations/

https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/#field-lookups-intro

https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/

2.django的后台管理页面功能

即在web页面中动态添加、修改、查看数据库中对象和数据,真的很方便很好用

2.1相关的一些命令

 python manage.py createsuperuser
创建管理员账号
3
4 http://127.0.0.1:8000/admin/
5 访问管理界面

2.2但是一定要注意,如果想管理某个app应用模块的model(也就是其中的数据表以及其映射的对象和类),一定要把本模块的model中的class注册到本app模块中的admin.py中

 from django.contrib import admin
from .models import Question admin.site.register(Question) 在本模块的admin.py中添加代码,将需要管理的数据库表注册到admin后台管理中去

2.3调整admin后台管理的显示顺序跟风格

 from django.contrib import admin

 from .models import Question

 class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
] admin.site.register(Question, QuestionAdmin)

3.django中的测试

3.1django中的单元测试,在app模块中的test.py中写代码,注意方法名要以test开头,运行测试脚本时候的命令

 python manage.py test app_name 

3.2如果在提交代码的时候自动化的进行测试,那也就是所谓的持续集成----continuous integration

4.静态文件的查找

4.1静态文件目录一般为app_name/static/appname/[type]/xxx.xxx,然后使用 django.contrib.staticfiles 即可让django自动的去查找对应的静态文件,方便管理,但是要在app模块中

4.2django让app有自己的模板有自己的静态文件,再次体现了django的app为单一的模块的思想。但是如果想让django自己去找,那要先把模块注入进来

5.进阶版后台管理界面

5.1可以设置显示数据表class的字段顺序,显示外键、分组显示、还可以自定义admin界面风格等等,这些都是在对应的admin.py中写代码

https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial07/

json、dict、对象之间的互相转化

django开发(二)的更多相关文章

  1. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  2. Linux——Django 开发环境部署(二)python版本控制器pyenv

    python版本控制器pyenv 之前的 那篇是说明了django环境的site package完全独立出来了,但是使用的python解释器还是系统的,为了继续独立出来,甚至是达到ruby的rvm的自 ...

  3. Django开发目录

    Django开发[第一章]:Django基础和基本使用 Django开发[第二章]:Django URLConf 进阶 Django开发[第三章]:Django View 进阶 Django开发[第四 ...

  4. Pycharm搭建Django开发环境

    Pycharm搭建Django开发环境 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们大家都知道Django是python都一个web框架,因此大家需要自行安装python环境 ...

  5. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  6. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  7. Django开发笔记四

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.邮箱激活 users app下,models.py: ...

  8. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  9. Django开发笔记一

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.运行 python manage.py runser ...

随机推荐

  1. node常见操作命令

    进入REPL环境(READ  EVAL  PRINT  LOOP) 接收用户输入 执行用户输入 打印执行结果到控制台 循环到下一次 打开终端,键入node进入命令交互模式,可以输入一条代码语句后立即执 ...

  2. is not in the sudoers file解决方法

    用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权 ...

  3. chrome自动填表会遮挡input中背景图的问题解决方法

    在做某项目登录界面时,发现用户密码框在Chrome自动填充时,input中的背景框会被遮住.网上也搜了一下,没有一个有效的解决方法. 来看csdn的登录界面,也有这个问题. 后来在浏览网页时,无意中发 ...

  4. 最简单的方式离线部署Python依赖包

    最简单的方式离线部署Python依赖包 SHOW ME CODE! 打包: $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ pip wheel -r re ...

  5. 如何查看github排行热度

    github热门趋势 https://github.com/trending github star排行榜 github输入:star:>数字,来查看star数的仓库: 输入:location: ...

  6. 开发环境使用docker 快速启动 单机 RocketMq

    镜像说明 https://cr.console.aliyun.com/?spm=5176.2020520001.1001.8.kpaxIC&accounttraceid=176ddc4e-62 ...

  7. 面试准备——(三)Selenium(1)基础问题及自动化测试

    转载:https://www.cnblogs.com/lesleysbw/p/6413880.html 面试准备——(三)Selenium(1)基础问题及自动化测试   滴滴面试: 1. 自己负责哪部 ...

  8. vs2008 使用百度编辑器

    准备工作 百度编辑器官方下载,并将文件放到项目根目录下. 因为vs2008 只到Framework 3.5,所以需要将4.0的东西去掉. 1)下载.net framework 3.5版的 Newton ...

  9. [工具] Altova UModel® 2017 is a UML tool for software modeling & application development.

    https://cdn.sw.altova.com/v2017sp2a/en/MissionKitEnt2017sp2.exe https://cdn.sw.altova.com/v2017sp2a/ ...

  10. [转]常见的JavaScript内存泄露

    什么是内存泄露 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制, ...