学习笔记----Django基础

Django介绍

  • Django是一个开放源代码的Web应用框架,由Python写成。Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。
    django官方网站
    django中文文档网站

MVC框架核心思想

解耦,让不同的代码块之间降低耦合,增加代码的可扩展性和可移植性,实现向后兼容。

MVC各部分的功能

  • M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
  • V全拼为View,用于封装结果,生成页面展示的html内容。
  • C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。
    在这里插入图片描述
    MVT各部分的功能
  • M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
  • V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
  • T全拼为Template(模板),与MVC中的V功能相同,负责封装构造要返回的html。
    -差异就在于黑线黑箭头标识出来的部分 在这里插入图片描述

虚拟环境

  • 不同项目,用到的包版本不同 兼容性和语法也不同
  • 所以要在虚拟环境下运行项目,这个是重点

虚拟环境其实就是对真实pyhton环境的复制,这样我们在复制的python环境中安装包就不会影响到真实的python环境。通过建立多个虚拟环境,在不同的虚拟环境中开发项目就实现了项目之间的隔离。

创建虚拟环境
  • 创建并配置使所有的虚拟环境,都位于/home/python/下的隐藏目录.virtualenvs下
    1.安装虚拟环境 sudo pip3 install virtualenv
    2.安装虚拟环境扩展包 sudo pip3 install virtualenvwrapper
    3.修改用户家目录下的配置文件.bashrc,添加如下内容 vim.bashrc

    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh

    生效文件 source .bashrc
    4.创建python3虚拟环境的命令如下 mkvirtualenv -p python3 虚拟环境名称

退出
  • 退出虚拟环境的命令 deactivate
使用与查看
  • 查看所有虚拟环境的命令 workon 两次tab键
  • 使用虚拟环境的命令 workon 虚拟环境名称
删除虚拟环境
删除虚拟环境的命令 rmvirtualenv 虚拟环境名称
安装包
进入虚拟环境后 是一个新的python环境 里面没有任何包 需要根据项目安装相应的包
安装所需要的包 pip install 包名称

其中指定包的版本需要加两个等号+版本号 pip install django==1.8.2
查看已有的包 pip list
包的安装路径:/usr/local/lib/python3.5/dist-packages


项目创建

创建Django项目

django-admin startproject 项目名
创建应用必须先进入虚拟环境。
项目目录如下:
在这里插入图片描述

  • manage.py是项目管理文件,通过它管理项目。
  • 与项目同名的目录,此处为test1。
  • _init _.py是一个空文件,作用是这个目录test1可以被当作包使用。
  • settings.py是项目的配置文件。
  • urls.py是项目的URL配置文件。
  • wsgi.py: web服务器和Django交互的入口。
创建Django应用
  • 一个项目由很多个应用组成的
  • 每一个应用完成一个功能模块

创建应用的命令python manage.py startapp 应用名
注意:创建应用时需要先进入项目目录
应用目录如下:
在这里插入图片描述

  • _init.py _:说明目录是一个Python模块。
  • models.py: 写和数据库项目的内容, 设计模型类。
  • views.py: ,接收请求,进行处理,与M和T进行交互,返回应答。
  • admin.py文件跟网站的后台管理相关。
  • migrations文件夹之后给大家介绍。
应用注册
  • 建立应用和项目之间的联系,需要对应用进行注册。
  • 修改settings.py中的 INSTALLED_APPS 配置项。
    在这里插入图片描述
开发服务器
  • django提供了一个纯python编写的轻量级web服务器
  • 可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。
    python manage.py runserver ip:端口
    服务器成功启动后如下图:
    在这里插入图片描述
    紧接着在浏览器中输入网址“127.0.0.1:8000”,或者按着ctrl键点击上图中标示出来的地址,可以查看当前站点开发效果。

如果增加、修改、删除文件,服务器会自动重启;
按ctrl+c停止服务器。

在这里插入图片描述

模型设计
  • 在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据
  • ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。
    - O是object: 类对象
    - R是relation: 关系, 也就是关系数据库中数据表的意思
    - M是mapping: 映射
使用django进行数据库开发的步骤
1.在models.py中定义模型类

2.迁移
3.通过类和对象完成数据增删改查操作

1.模型类的设计
根据设计,在models.py中定义模型类如下
在这里插入图片描述

2.迁移
迁移由两步完成:

  • 1.生成迁移文件:根据模型类生成创建表的迁移文件。
    python manage.py makemigrations
  • 2.执行迁移:根据第一步生成的迁移文件在数据库中创建表。
    python manage.py migrate

数据表的默认名称为: <app_name>_<model_name>

在这里插入图片描述 - hbook = models.ForeignKey(‘BookInfo’)这句代码就让BookInfo类和HeroInfo类之间建立了一对多的关系。

3.数据操作//增删改查

  • 进入项目shell的命令:python manage.py shell
  • 首先引入booktest/models中的类:from booktest.models import BookInfo,HeroInfo
  • 查询所有图书信息:BookInfo.objects.all()
  • 新建图书对象

b=BookInfo()
b.btitle=“射雕英雄传”
from datetime import date
b.bpub_date=date(1991,1,31)
b.save()

  • 查找图书信息并查看值

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

  • 修改图书信息

b.bpub_date=date(2017,1,1)
b.save()
b.bpub_date

  • 删除图书信息

b.delete()

4.对象的关联操作
创建一个BookInfo对象

b=BookInfo()
b.btitle=‘abc’
b.bpub_date=date(2017,1,1)
b.save()

创建一个HeroInfo对象

h=HeroInfo()
h.hname=‘a1’
h.hgender=False
h.hcomment=‘he is a boy’
h.hbook=b
h.save()

图书与英雄是一对多的关系,django中提供了关联的操作方式。h.hbook=b
获得关联集合:返回当前book对象的所有hero。b.heroinfo_set.all()

后台管理
使用Django的管理模块,需要按照如下步骤操作:
  • 1.管理界面本地化
  • 2.创建管理员
  • 3.注册模型类
  • 4.自定义管理页面

1.管理界面本地化
打开test1/settings.py文件,找到语言编码、时区的设置项,将内容改为如下:

LANGUAGE_CODE = ‘zh-hans’ #使用中国语言
TIME_ZONE = ‘Asia/Shanghai’ #使用中国上海时间

在这里插入图片描述
2.创建管理员

  • 创建管理员的命令如下,按提示输入用户名、邮箱、密码。 python manage.py createsuperuser
  • 启动服务器。python manage.py runserver
  • 进入。http://127.0.0.1:8000/admin/
  • 登录成功后界面如下,但是并没有图书、英雄的管理入口,接下来进行第三步操作。
    在这里插入图片描述

3.注册模型类

  • 登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作
    打开booktest/admin.py文件,编写如下代码:
    from django.contrib import admin
    from booktest.models import BookInfo,HeroInfo
    
    admin.site.register(BookInfo)
    admin.site.register(HeroInfo)
    

4.自定义管理页面
在列表页只显示出了BookInfo object,对象的其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能,比如列表页要显示哪些值。
打开booktest/admin.py文件,自定义类,继承自admin.ModelAdmin类。

  • 属性list_display表示要显示哪些属性

class BookInfoAdmin(admin.ModelAdmin):
list_display = [‘id’, ‘btitle’, ‘bpub_date’]

  • 修改模型类BookInfo的注册代码如下

admin.site.register(BookInfo, BookInfoAdmin)

  • 刷新BookInfo的列表页,所有属性都显示出来了
    在这里插入图片描述
  • 最终booktest/admin.py文件代码如下
    在这里插入图片描述
视图
在Django中,通过浏览器去请求一个页面时,使用**视图函数**来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。

**使用视图的步骤:**
  • 1.定义视图
  • 2.配置URLconf

1.定义视图

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

  • 打开booktest/views.py文件,定义视图index如下

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("index")
    

2.进行url配置

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

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

  • 配置url时,有两种语法格式:
    - url(正则表达式,视图函数名)
    - url(正则表达式,include(应用中的urls文件))
    在这里插入图片描述

  • 需要两步完成URLconf配置
    1.在应用中定义URLconf
    2.包含到项目的URLconf中

在应用中定义URLconf

  • booktest应用下创建urls.py文件,定义代码如下:
    	from django.conf.urls import url
    	from booktest import views
    	urlpatterns = [
    	    url(r'^$', views.index),  # $表示匹配到完整的结尾
    	]
    	```
    

包含到项目的URLconf中

  • 包含到项目中:打开test1/urls.py文件,为urlpatterns列表增加项如下:
    url(r'^', include('booktest.urls')),
    
    在这里插入图片描述
  • url匹配的过程
    在这里插入图片描述
    当用户输入如http://127.0.0.1:8000/aindex时,去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到应用的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello python给浏览器来显示。
模板
  • 在Django中,将前端的内容定义在模板中,然后再把模板交给视图调用,各种漂亮、炫酷的效果就出现了。
  • 模板不仅仅是一个html文件。

创建模板文件
在booktest文件夹下创建templates,在该文件夹下创建booktest,在此文件夹创建index.html
在这里插入图片描述
配置模板目录

  • 设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值。
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    

在这里插入图片描述
使用模板文件
在这里插入图片描述

  • a) 加载模板文件:去模板目录下面获取html文件的内容,得到一个模板对象。
  • b) 定义模板上下文:向模板文件传递数据。
  • c) 模板渲染:得到一个标准的html内容。

给模板文件传递数据

  • 模板变量使用:{{模板变量名}}
  • 模板代码段:{%代码段%}
  • for循环:
    {% for i in list %}
    list不为空时执行的逻辑
    {% endfor %}
    结束标志

视图调用模板

  • 打开booktst/views.py文件,调用上面定义的模板文件
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值