数据源

Django作为一个强大的Python语言的web框架,自然少不了对数据源的支持。settings.py中就有相应的配置。如下:

数据源默认配置

先关注一下截图部分的第二行,这是Django给出的一个相关内容的说明文档,如果英语水平足够的话,这个文档也会给你相当的帮助。

如上图所示,settings.py中,定义了一个DATABASES的变量,这个变量指向的对象,是一个字典类型的复合数据。我们看到,其中包含了一个default键,这个键对应的值,就是Django提供的默认的数据源,是一个sqlite数据库。

简单介绍一下sqlite,它和我们可能经常用到的Mysql数据库一样,也是一个遵守ACID事务原则的关系型数据库。不同的是,它是嵌入式的。

事实上,我们很大可能需要将数据库配置修改到我们购买或搭建的数据库服务器,可能是MySQL。那么,我们需要修改以上的配置,如下:

MySQL数据源配置

mysqlclient

修改完成之后,启动项目,你会得到一个报错,如下:

报错展示

报错内容太长,没有全部截取。注意最后一行提示:Did you install mysqlclient?

你安装mysqlclient了吗?如其他一些语言一样,Python想要操作数据库,需要依赖一些专用的数据库相关的包。而Django中,如果想要使用MySQL数据库作用数据源,需要使用mysqlclient这个包。所以,你需要通过pip命令安装mysqlclient。如下:

mysqlclient安装

注意,你需要在管理员身份下打开cmd窗口来运行pip命令。

安装完成后,发现已经正常启动了,结果如下:

启动日志

这里发现,项目已经正常启动了,但是,貌似还有一些小问题。注意控制台给出的日志提示。

尝试访问一下后台管理系统,果然报错,如下:

报错展示(2)

这个错误比较明显,说test库下的表auth_user找不着。根据控制台的之前的提示,我们执行一下manage.py migrate。结果如下:

migrate执行日志

执行完成后,再次打开管理平台页面,发现正常打开了登录页,没有再报错。此时,你也可以通过常用的数据库客户端,打开你刚刚配置的数据库,你会发现,数据库中,多出了一些表。

Django中,以migrate为参数,执行manage.py模块,功效就是初始化数据库表。

如果你得到了一些其他的错误信息,请认真检查你的数据库连接,用户名,密码等是否正确,你提供的数据库名在服务器上是否确实存在等。

pip管理包

整理几个包相关的pip命令,第一个是上面用到的安装包:

pip install {#name} [== {#version}]

其中,{#name}代表的是包名,{#version}代表的是版本号。被中括号括起来的部分是可以被省略的,省略则表示,安装最新的稳定版本。

第二个查已安装包列表:

pip list

如下:

pip执行展示

第三个是卸载已安装的包:

pip uninstall {#name}

此外,以上命令加上适当参数,还可以用来做更新检查和更新,不再一一介绍。

创建超级管理员账户

尝试通过之前创建的超级管理员账户admin登录,提示账户或密码错误。后来想到,因为更换了数据源,又没有做数据迁移的过程,所以,自然丢失了之前的数据,包含超管。那么,就重新创建一次好。(为自己的智商捉急)

创建超管命令:

manage.py createsuperuser

执行过程如下:

createsuperuser执行日志

再次登录,成功进入首页。这次,记得试试添加一个组或用户,试试修改密码等功能。

模块

接下来,我们从manage.py入手,再来学习一些Python的基本知识,由于manage.py内容较少,我们只提供一次截图。后续内容依托该截图来说明。

manage.py内容

Python中,一个.py文件,称之为一个模块,从某种角度来说,一个Python项目,就是一系列存在相互调用关系的模块。

模块与模块之间,可以通过import关键字来导入。

如Django项目中的manage.py就是一个模块,该模块的开始部分,通过import关键字,导入了os和sys两个其它模板。

对于一个模块(文件)来说,其中的内容,总上被从上而下的执行。新建文件demo5.py,内容如下:

demo5.py内容

执行结果如下:

demo5执行结果

当然了,有过其他语言基础的同学一定会提出疑问,没错,一些表达式会调整代码的执行顺序,这部分内容,我们暂时不去讨论。

函数

Python中,通过以下格式来定义一个函数:

函数定义格式

manage.py中,就有一个定义的函数,名字是main。

那么,函数体中的内容何时执行呢?是在定义时候就执行吗?不是的,函数体中的内容是在函数被调用时才执行的。如manage.py中,直接最后一行,通过main()的方式,调用了main函数,main函数体中的内容才得以执行。

__name__

__name__和我们之前见到过的__file__的性质一样。__file__代表当前文件的完整路径,__name__则代表当前模块的名称。比较特殊的是,如果当前模块是主模块,则__name__的值为 __main__,如果不是主模块,即被导入的,则为模块的名字。

缩进

如果说缩进在其他语言中,只是直到了一个排版的作用,那么,在Python中,缩进则成为了代码的一部分,并且是很重要的一部分。

如果我们把缩进的单位距离定义为1,则在一段代码或一个模块中,你可以会见到1个缩进,2个缩进,3个缩进,或者更多的缩进。并且,我们把一个语句块中包含另一个语句块的情形,定义为父子关系。理解以下两句话:

一个语句块中,所有的语句具备相同的缩进。

子语句块的缩进单位一定大于父语句块的缩进。

参照manage.py来理解这两句话,我们把manage.py中的内容,按照语句块框起来,结果如下:(自己先划分一下再看,效果更佳哦)

manage.py语句块划分

Python之Django汉化

python之通过pip安装Django

Python交互编程和模块化

python django mysql_Python之模块、函数和缩进相关推荐

  1. python django web典型模块开发实战_带你读《Python Django Web典型模块 开发实战》之一:从新浪微博聊起多端应用-阿里云开发者社区...

    Python Django Web典型模块 开发实战 点击查看第二章 点击查看第三章 寇雪松 编著 第1章 从新浪微博聊起多端应用 当人们听到"新浪",脑海里第一个浮现的关联词是& ...

  2. python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发

    本书结合样例,介绍 Django 的基础知识.主要模块的开发以及权限管理等高级内容,并且通过图书管理系统.博客系统.车费管理系统 3 个项目的开发实战,使读者既能掌握 Django 的重要开发技术,又 ...

  3. Python中re(正则表达式)模块函数学习

    2019独角兽企业重金招聘Python工程师标准>>> Python正则表达式指南 今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的 ...

  4. python django mysql_python测试开发django-10.django连接mysql

    前言 Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle.本篇以mysql为例简单介绍django连接mysql进行数据操作 Django连 ...

  5. python类中函数_如何在Python类中使用模块函数

    参见英文答案 > How do you call a private module function from inside a class?                           ...

  6. python 模块定义_在python中定义私有模块函数

    类私有化和模块私有化之间可能存在混淆. A模块private以一个下划线开头 当使用import命令的from import *形式时,这样的元素不会被复制:但是,如果使用import 语法(see ...

  7. python中调用什么模块的什么函数来实现求实数平方根_python语言基础与应用答案...

    python语言基础与应用答案 python3不再区分整数和长整数,统一为()类型. python可以使用(____)函数打开文件,这个函数默认的打开模式为(____). a=[3]alist=[1, ...

  8. 查看python内部模块命令,内置函数,查看python已经安装的模块命令

    查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list 或者用 help('modules') 或者用 python -m ...

  9. python中math模块函数_Python常用的一些内建函数和math模块函数

    一:Python内建函数 1 #abs取绝对值 2 num = -10 3 print(abs(num))4 5 #max 求最大值 6 print(max(6, 9, 2, 12, 8))7 8 # ...

最新文章

  1. 以太坊白皮书_区块链60讲第33集~什么是以太坊?
  2. C++知识回顾之__stdcall、__cdcel和__fastcall三者的区别
  3. Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1
  4. 从网络访问计算机不能添加用户名,windows7 和 XP 能互相用\\ip访问,但是不能通过计算机名访问...
  5. 端午小长假全国接待游客4880万人次,客流同比恢复5成
  6. NVIDIA Tesla K40C 和 AMD Firepro W8100 的对比
  7. 英语面试功略:英语口语突击法
  8. 瑞芯微和全志哪个好_瑞芯微和全志科技基本面信息简要对比和整理
  9. Fiddler对安卓模拟器里的APP抓包(步骤详细,各种抓包工具总结)
  10. CGAL几何库配置教程
  11. matlab设计译码器,基于Matlab编译码器的仿真与设计
  12. MCTS (Monte Carlo Tree Search)
  13. 推荐一款云服务器免费试用,可以延期再使用
  14. fota 差分包_艾拉比FOTA差分升级助力电力厂商加速软件迭代
  15. prometheus监控域名证书到期时间
  16. java网络编程技术有哪些_Java网络编程技术
  17. 5G安全的全球统一认证体系和标准演进
  18. 使用filter()方法进行数据过滤
  19. 绿色版浏览器DIY,大家别乱用网上的非官方绿色版,自己动手吧,很简单!(2015-11-26更新)
  20. cmd执行python脚本命令大全_Python脚本实现在cmd执行相关命令

热门文章

  1. [转]ExtJs中可用的xtype
  2. java 正则 html 标签_Java正则 HTML 标签 得到 纯文本
  3. Linux kernel crash定位
  4. Android系统自带AEC/AGC/NC的demo
  5. Clojure 学习入门(2)- eclipse 插件
  6. 判断显卡好坏的步骤、新买显卡装机后不亮解决
  7. CentOS虚拟机 Device eth0 does not seem to be present
  8. windows系统bat批处理 打开乱码
  9. linux 系统命令总结之ubuntu 系列命令 持续更新中~
  10. 关于阿里云快照收费机机制和说明