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制作花瓣网美女图片爬虫
Oct 28 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
python实现移位加密和解密
Mar 22 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
python新手学习使用库
Jun 11 Python
python+django+selenium搭建简易自动化测试
Aug 19 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
初识PHP
2014/09/28 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
javascript 一些用法小结
2009/09/11 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
幼教求职信
2014/03/12 职场文书
售后客服工作职责
2014/06/16 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers