DJango的创建和使用详解(默认数据库sqlite3)


Posted in Python onNovember 18, 2019

1.安装虚拟环境

虚拟环境是真实python环境的复制版本。

安装虚拟环境的命令:

1)sudo pip install virtualenv #安装虚拟环境

2)sudo pip install virtualenvwrapper #安装虚拟环境扩展包

3)编辑家目录下面的.bashrc文件,添加下面两行。

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

4)使用source .bashrc使其生效一下。

创建虚拟环境命令:

mkvirtualenv 虚拟环境名

创建python3虚拟环境:

mkvirtualenv -p python3 bj11_py3

进入虚拟环境工作:

workon 虚拟环境名

查看机器上有多少个虚拟环境:

workon 空格 + 两个tab键

退出虚拟环境:

deactivate

删除虚拟环境:

rmvirtualenv 虚拟环境名

虚拟环境下安装包的命令:

pip install 包名

注意:不能使用sudo pip install 包名,这个命令会把包安装到真实的主机环境上而不是安装到虚拟环境中。

apt-get install 软件

pip install python包名

安装django环境:

pip install django==1.8.2

查看虚拟环境中安装了哪些python包:

pip list

pip freeze

2.创建项目

django-admin startproject 项目名称

注意:创建应用必须先进入虚拟环境

DJango的创建和使用详解(默认数据库sqlite3)

__init__.py: 说明test1是一个python包。

settings.py: 项目的配置文件

urls.py: 进行url路由的配置

wsgi.py: web服务器和DJanggo交互的入口

manage.py: 项目的管理文件

3.创建应用

一个项目由很多个应用组成的,每一个应用完成一个特定的功能。

创建应用的命令如下:

python manage.py startapp 应用名

注 意:创建应用时需要先进入项目目录。

应用目录如下:

__init__.py: 说明目录是一个python模块

models.py: 用于写和数据库项目的内容

views.py: 接收数据,处理数据,与M,T进行交互,返回应答

定义处理函数,视图函数 培养

tests.py: 测试代码的文件

admin.py: 网站后台管理相关的文件

建立应用和项目之间的联系,需要对应用进行注册。

修改settings.py中的INSTALLED_APPS配置项。

运行开发web服务器命令:

python manage.py runserver

ORM

django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。

设计类:模型类。

ORM另外一个作用:根据设计的类生成数据库中的表。

模型类

模型类设计

在应用models.py中设计模型类。

必须继承与models.Model类。

1) 设计BookInfo类。

2) 设计HeroInfo类。

Models.ForeignKey可以建立两个模型类之间一对多的关系,django在生成表的时候,就会在多的表中创建一列作为外键,建立两个表之间一对多的关系。

模型类生成表

1) 生成迁移文件

命令:python manage.py makemigrations

迁移文件是根据模型类生成的。

2) 执行迁移生成表

命令:python mange.py migrate

根据迁移文件生成表。

生成表名的默认格式:

应用名_模型类名小写

通过模型类操作数据表

进入项目shell的命令:

python manage.py shell

以下为在相互shell终端中演示的例子:

首先导入模型类:

from booktest.models import BookInfo,HeroInfo

1)向booktest_bookinfo表中插入一条数据。

b = BookInfo() #定义一个BookInfo类的对象

b.btitle ='天龙八部' #定义b对象的属性并赋值

b.bpub_date = date(1990,10,11)

b.save() #才会将数据保存进数据库

2)查询出booktest_bookinfo表中id为1的数据。

b = BookInfo.objects.get(id=1)

3)在上一步的基础上改变b对应图书的出版日期。

b.bpub_date = date(1989,10,21)

b.save() #才会更新表格中的数据

4)紧接上一步,删除b对应的图书的数据。

b.delete() #才会删除

5)向booktest_heroInfo表中插入一条数据。

h = HeroInfo()

h.hname = '郭靖'
h.hgender = False

h.hcomment = ‘降龙十八掌'

b2 = BookInfo.objects.get(id=2)

h.hbook = b2 #给关系属性赋值,英雄对象所属的图书对象

h.save()

6)查询图书表里面的所有内容。

BookInfo.objects.all()

HeroInfo.objects.all()

关系操作

1)查询出id为2的图书中所有英雄人物的信息。

b = BookInfo.objects.get(id=2)

b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息

后台管理

1) 本地化

语言和时区的本地化。 zh-hans

修改settings.py文件。 Asia/Shanghai

2) 创建管理员

命令:python manage.py createsuperuser

3) 注册模型类

在应用下的admin.py中注册模型类。

告诉djang框架根据注册的模型类来生成对应表管理页面。

b = BookInfo()

str(b) __str__

4) 自定义管理页面

自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容。

视图

在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。

视图函数的使用

1)定义视图函数

视图函数定义在views.py中。

例:

def index(request):

#进行处理。。。

return HttpResponse('hello python')

视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,hello python就是返回给浏览器显示的内容。

2)进行url配置

url配置的目的是让建立url和视图函数的对应关系。url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。

url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作。

配置url时,有两种语法格式:

a) url(正则表达式,视图函数名)

b) url(正则表达式,include(应用中的urls文件))

工作中在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系。

url匹配的过程

在项目的urls.py文件中包含具体应用的urls.py文件,应用的urls.py文件中写url和视图函数的对应关系。

当用户输入如http://127.0.0.1:8000/aindex时,去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到项目的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello python给浏览器来显示。

模板

模板不仅仅是一个html文件。

模板文件的使用

1) 创建模板文件夹

2) 配置模板目录

3) 使用模板文件

a) 加载模板文件

去模板目录下面获取html文件的内容,得到一个模板对象。

b) 定义模板上下文

向模板文件传递数据。

c) 模板渲染

得到一个标准的html内容。

给模板文件传递数据

模板变量使用:{{ 模板变量名 }}

模板代码段:{%代码段%}

for循环:

{% for i in list %}

{% endfor %}

以上这篇DJango的创建和使用详解(默认数据库sqlite3)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python socket编程实例详解
May 27 Python
Python的标准模块包json详解
Mar 13 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
Python打印特殊符号及对应编码解析
May 07 Python
详解Django配置优化方法
Nov 18 #Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 #Python
基于python操作ES实例详解
Nov 16 #Python
Python爬取豆瓣视频信息代码实例
Nov 16 #Python
Pandas数据离散化原理及实例解析
Nov 16 #Python
python实现XML解析的方法解析
Nov 16 #Python
Python实现自定义读写分离代码实例
Nov 16 #Python
You might like
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
javascript新手语法小结
2008/06/15 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
jquery选择器使用详解
2014/04/08 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python封装shell命令实例分析
2015/05/05 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python+django实现简单的文件上传
2016/08/17 Python
用Python实现KNN分类算法
2017/12/22 Python
Python小进度条显示代码
2019/03/05 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
客服部工作职责范本
2014/02/14 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
八年级历史教学反思
2016/02/19 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python