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单链表实现代码实例
Nov 21 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python实现求最长回文子串长度
Jan 22 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
人工神经网络算法知识点总结
Jun 11 Python
python实现关闭第三方窗口的方法
Jun 28 Python
python 求定积分和不定积分示例
Nov 20 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
如何使用repr调试python程序
Feb 28 Python
没编程基础可以学python吗
Jun 17 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
JS定时器实例
2013/04/17 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
Python高并发和多线程有什么关系
2020/11/14 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
银行员工职业规划范文
2014/01/21 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
会议简报格式范文
2015/07/20 职场文书
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers