1 相对路径 让这个元素相对于它在文档流中的位置的起始点进行移动。有一点要注意, 在使用相对定位时,就算元素被偏移了,但是他仍然占据着它没偏移前的空间。这里值得注意的一点是:偏移可不是边距,跟边距是不一样的。
2 绝对路径
如果它的父元素没有设置定位,那么就得看它父元素的父元素是否有设置定位 ,如果还是没有就继续向更高层的祖先元素类推,总之它的定位就是相对于设置了除static定位之外的定位(比如position:relative)的第一个祖先元素,如果所有的祖先元素都没有以上三种定位中的其中一种定位,那么它就会相对于文档body来定位(并非窗口,相对于窗口定位的是fixed)
ajax
在前后端分离的时候,为了提供更好的用户体验,进行局部刷新
创建
首先安装虚拟环境,命令如下
sudo pip3 install virtualenv #安装虚拟环境
接下来还要安装虚拟环境扩展包,命令如下:
sudo pip3 install virtualenvwrapper
安装虚拟环境包装器的目的是使用更加简单的命令来管理虚拟环境。
修改用户家目录下的配置文件.bashrc,添加如下内容:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
使用source .bashrc命令使配置文件生效。
创建python3虚拟环境的命令如下:
mkvirtualenv -p python3 虚拟环境名称
例:
mkvirtualenv -p python3 py_django
创建成功后,会自动工作在这个虚拟环境上。
创建虚拟环境需要联网。
工作在虚拟环境上,提示符最前面会出现"(虚拟环境名称)"。
所有的虚拟环境,都位于/home/python/下的隐藏目录.virtualenvs下。
退出虚拟环境的命令如下:
deactivate
查看与使用
查看所有虚拟环境的命令如下:
提示:workon后面有个空格,再按两次tab键。
使用虚拟环境的命令如下:
写出名称的前部分后,可以使用tab键补齐
workon 虚拟环境名称
例:
workon py_django
删除
删除虚拟环境的命令如下:
rmvirtualenv 虚拟环境名称
例:
先退出:deactivate
再删除:rmvirtualenv py_django
包操作
查看已安装的python包命令如下:
pip list
pip freeze
这两个命令都可已查看当前工作的虚拟环境中安装了哪些python包,只是显示的格式稍有不同。
2 创建图书管理项目
创建项目的命令如下:
django-admin startproject 项目名称
例:
django-admin startproject test1
项目默认目录说明
进入test1目录,查看目录树形结构
cd test1
tree
manage.py是项目管理文件,通过它管理项目。
与项目同名的目录,此处为test1。
_init_.py是一个空文件,作用是这个目录test1可以被当作包使用。
settings.py是项目的整体配置文件。
urls.py是项目的URL配置文件。
wsgi.py是项目与WSGI兼容的Web服务器入口,详细内容会在布署中讲到。
创建应用
使用一个应用开发一个业务模块,此处创建应用名称为booktest,完成图书-英雄的信息维护。
创建应用的命令如下:
python manage.py startapp booktest
_init.py_是一个空文件,表示当前目录booktest可以当作一个python包使用。
tests.py文件用于开发测试用例,在实际开发中会有专门的测试人员,这个事情不需要我们来做。
models.py文件跟数据库操作相关。
views.py文件跟接收浏览器请求,进行处理,返回页面相关。
admin.py文件跟网站的后台管理相关。
migrations文件夹之后给大家介绍。
安装应用
应用创建成功后,需要安装才可以使用,也就是建立应用和项目之间的关联,在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装。
初始项目的INSTALLED_APPS如下图:
接下来在元组中添加一个新的项,当前示例为booktest
'booktest',
开发服务器
在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用。
运行服务器命令如下:
python manage.py runserver ip:端口
例:
python manage.py runserver
可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。
模型设计
我们之前操作数据库是通过写sql语句,那么能不能不写sql语句就可以操作数据库呢? 可以,就是通过接下来要给大家讲的ORM框架。
ORM框架
O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。
django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。
使用django进行数据库开发的步骤如下:
1.在models.py中定义模型类
2.迁移
3.通过类和对象完成数据增删改查操作
1.定义模型类
模型类定义在models.py文件中,继承自models.Model类。
设计图书类
图书类:
类名:BookInfo
图书名称:btitle
图书发布日期:bpub_date
模型类的设计
根据设计,在models.py中定义模型类如下:
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
2.迁移
迁移前目录结构如下图:
迁移由两步完成:
1.生成迁移文件:根据模型类生成创建表的迁移文件。
2.执行迁移:根据第一步生成的迁移文件在数据库中创建表。
生成迁移文件命令如下:
python manage.py makemigrations
执行生成迁移文件命令后,会在应用booktest目录下的migrations目录中生成迁移文件。
生成迁移文件后的目录结构:
Django框架根据我们设计的模型类生成了迁移文件,在迁移文件中我们可以看到fields列表中每一个元素跟BookInfo类属性名以及属性的类型是一致的。同时我们发现多了一个id项,这一项是Django框架帮我们自动生成的,在创建表的时候id就会作为对应表的主键列,并且主键列自动增长。
执行迁移命令如下:
python manage.py migrate
当执行迁移命令后,Django框架会读取迁移文件自动帮我们在数据库中生成对应的表格。
Django默认采用sqlite3数据库,上图中的db.sqlite3就是Django框架帮我们自动生成的数据库文件。 sqlite3是一个很小的数据库,通常用在手机中,它跟mysql一样,我们也可以通过sql语句来操作它。
下面使用sqliteman打开db.sqlite3文件进行查看。如果没有安装sqliteman,需要先使用如下命令进行安装
sudo apt-get install sqliteman
安装成功之后,在终端输入sqliteman命令,敲击回车即可打开软件。