Python-Django基本笔记

Django 框架
1.WEB 与 服务器
1.WEB : 表示用户可以浏览的网页内容(HTML,CSS,JS)
2.服务器
专门给用户提供服务的一台机器
1.硬件与软件
硬件范畴:一台机器
软件范畴:一个能够接受用户请求并给出响应的程序
1.APACHE
2.TOMCAT
3.IIS(Internet Information Service)
4.Nginx
2.服务器的作用
1.存储WEB上所需要的信息(HTML,图片,js,css,音视频)
2.处理用户的请求(request)并给出响应(response)
3.执行服务器端的程序 : 查找数据库
3.服务器 与 WEB之间的关系
WEB需要放在服务器上才能够被用户访问
2.框架
1.什么是框架
框架是一个为了解决开放性问题而存在的一种结构.框架本身会提供一些最基本的功能.我们只需要在基本功能之上搭建属于自己的操作即可.
2.PYTHON WEB 框架
1.Django : 重量级的WEB框架
2.Tornado : 异步框架
3.Flask : 轻量级框架
3.Django 框架
1.什么是Django
是一个开源框架,2005年发布,采用Python语言编写的.早期是做新闻和内容管理的网站的.Django本身提供了强大的后台管理系统.
2.Django的框架模式 - MTV
M : Models 层
模型层,负责数据库建模以及CRUD的操作
T : Templates 层
模板层,处理用户显示的内容的,比如:html
V : Views 层
视图层,处理与用户交互的部分内容

	MVC : 三层架构
		M:Models,模型层,与数据库打交道
		V:Views,视图层,处理用户显示的内容的
		C:Controller,控制器层,处理与用户交互的部分内容
	MTV            MVC
	M    ....      M
	T    ....      V
	V    ....      C
3.Django的官方介绍
	官网:http://www.djangoproject.com
	中文文档:http://djangobook.py3k.cn/2.0/

4.Django 框架的使用
1.安装Django框架
1.查看已安装的Django版本
1.进入到终端以及python交互模式
python3 / ipython3
2.交互模式中 输入 import django
如果未报错:当前环境下已经安装好Django
如果报错:当前环境未安装过Django
3.查看已安装的版本
交互模式中:django.VERSION
2.安装
1.在线安装 - 使用 pip / pip3
sudo pip3 install django
(安装Django的最新版本)

			sudo pip3 install django==1.11.8
			(安装Django的指定版本)
		2.离线安装
			1.下载Django包
			2.在环境下解压Django包
				tar -xvf Django-1.11.8.tar.gz
			3.进入到目录中,找到 setup.py 文件
				sudo python3 setup.py install
2.使用Django
	1.创建目录
		用于保存所有的Django项目
		mkdir Django

		使用 django-admin 指令创建Django项目
		语法:django-admin startproject 项目名
	2.启动服务,访问网站
		在项目中找到 manage.py
		通过manage.py启动项目(服务)
		python3 manage.py runserver
	3.访问网站
		启动服务之后,浏览器访问
		http://localhost:8000
		http://127.0.0.1:8000
3.Django 项目结构介绍
	1.manage.py
		负责执行Django中的各项操作
		如:
			启动服务:runserver
			创建应用:startapp
			... ...
	2.主目录(目录名称与项目名称一致)
		1.__init__.py
			项目的初始化文件,服务被启动时,该文件自动被执行
		2.urls.py
			项目的基础url配置文件(路由配置文件)
		3.wsgi.py
			应用服务器配置文件
		4.settings.py
			项目的配置文件
			1.BASE_DIR:获取当前项目的绝对路径
			2.DEBUG : 调试模式
				开发过程:推荐使用 True
				上线运行:必须改为 False
			3.ALLOWD_HOSTS
				设置允许访问本项目的地址列表
				如果为空,只有本机能访问(localhost/127.0.0.1)
				推荐写 ['*'],任何表示该机器的地址都可以访问当前项目

				如果允许被其他机器访问的话,启动服务时,必须使用以下方式:
					./manage.py runserver 0.0.0.0:端口号
			4.INSTALLED_APPS
				指定已安装的应用,如果有自定义应用的话,需要在此注册
			5.MIDDLEWARE
				注册中间件
			6.ROOT_URLCONF
				指定项目的基础路由配置文件
			7.TEMPLATES
				指定模板的信息
			8.DATABASES
				指定数据库的信息
			9.LANGUAGE_CODE
				语言设置,如果需要中文的话,允许将值更改为 "zh-Hans"

			10.TIME_ZONE
				指定时区,建议修改为 "Asia/Shanghai"
4.URL的使用
	1.urls.py
		默认在主目录中,主路由配置文件,包含所有的地址映射
	2.测试
		1.在主目录中,创建 views.py
			作用:包含所有定义好的视图(处理程序)

	3.url 函数
		作用:为了匹配用户的访问路径
		语法:
			url(regex,views,kwargs=None,name=None)		
				1.regex:允许是正则表达式,匹配请求的url的
				2.views:对应的视图处理函数
				3.kwargs:字典,用来向views传参的,如果没有参数的话则可以省略
				4.name:字符串类型,为url起别名,在地址反向查询时使用
	4.通过url向视图传参
		http://localhost:8000/run/15
		http://localhost:8000/run/26
		http://localhost:8000/run/78
		1.使用正则表达式传参
			使用子组传参,一个子组是一个参数,要传递多个参数的话使用多个子组
			子组 - ()

			urlpatterns = [
				# 访问路径是run/的时候,交给run_views去处理
				url(r'^run/$',run_views),
				# 访问路径是run/两位数字的时候,交给run1_views去处理
				url(r'^run/(\d{2})/$',run1_views),
				# 访问路径是run/四位数字/两位数字的时候,交给run2_views去处理
				url(r'^run/(\d{4})/(\d{2})/$',run2_views),


			]
			注意:
					1.url()中,一个子组表示一个参数
					2.在views中,对应的处理函数要根据url()中子组的个数,相应的定义参数.定义的参数要位于request之后

=====================================================
1.url()
1.注意
如果一个访问路径能够匹配到多个url()的时候,那么只找匹配的第一个url()去执行
2.url 传参
1.通过正则的子组传参
2.使用 url()第三个参数 - 字典传参
dic = {
‘name’:‘sa.zh’,
‘age’:‘25’
}
url(r’^show/$’,show_views,dic)

		views.py
		def show_views(request,name,age):
			pass

2.Django 中的 应用
1.什么是应用
应用就是网站中一个独立的模块程序
在Django中,主目录一般不处理用户的具体请求,主目录主要做的是项目的初始化以及请求的分发.而具体的请求由各个应用去处理
2.创建应用
1.指令
./manage.py startapp 应用名称
ex:
./manage.py startapp news
2.在 settings.py 中进行注册
在 INSTALLED_APPS 中追加应用名称
INSTALLED_APPS = [
‘django.contrib.admin’,
… …,
‘自定义应用名称’
]
3.练习
1.创建新项目 - netease
2.创建 index 应用,并注册
3.创建 sport 应用,并注册
4.创建 music 应用,并注册
5.创建 news 应用,并注册
3.应用的结构组成
1.migrations 目录
存放的是数据库的中间文件
2.init.py
应用的初始化文件
3.admin.py
应用的后台管理配置文件
4.app.py
应用的属性配置文件
5.models.py
Models 与模型相关的配置文件
6.tests.py
测试模块
7.views.py
定义视图的文件
4.分布式路由系统
# 交给 music 应用去处理(转交给music的urls)
from django.conf.urls import include
# url(r’^music/’,include(‘music.urls’)),
http://localhost:8000/music/****
# 交给 music 应用中的 index_views 视图去处理
http://localhost:8000/music/index
# 交给 sport 应用去处理(转交给sport的urls)
http://localhost:8000/sport/****

	练习:
		1.访问路径 localhost:8000/news/index
			转交给 news 的urls 再找到index_views处理
		2.访问路径 localhost:8000/sport/index
			转交给 sport 的urls 再找到index_views处理
		3.访问路径 localhost:8000/index/index
			转交给 index 的urls 再找到index_views处理

	需求:
		1.访问路径 http://localhost:8000/music/
			交给 music 应用中的 index_views 视图去处理
			url(r'^$',index_views)
		2.访问路径 http://localhost:8000/music/show
			交给 music 应用中的 show_views 视图去处理


		 http://localhost:8000/music/index
		 	交给 music 应用中的 index_views 视图去处理

		news 应用:
		1. http://localhost:8000/news/
			交给 news 应用中的 index_views 视图去处理

		需求
			1.http://localhost:8000/
				交给 index 应用中的 index_views 视图去处理
			2.http://localhost:8000/login
				交给 index 应用中的 login_views 视图去处理
			3.http://localhost:8000/register
				交给 index 应用中的 register_views 视图去处理

			只要访问路径不是 music , news , sport 的话,一律都交给 index 应用去处理

3.Django 中的 模板(Templates)
1.什么是模板
模板就是要动态呈现给用户的网页内容
模板的本质就是网页 - 前后端结合的网页
2.模板的设置
在 settings.py中, TEMPLATES 变量

	1.BACKEND : 指定模板的搜索引擎
	2.DIRS : 指定模板的存放目录们
		如果DIRS中为空的话,那么Django会自动的到每个应用中搜索一个叫 templates 的目录作为模板存放目录
	3.APP_DIRS
		True : 优先从DIRS指定的目录中查找模板,如果没找到的话,再搜索应用中的templates目录
3.模板的加载方式
	1.使用 loader 获取模板,通过HttpResponse进行响应
		from django.template import loader

		def index_views(request):
			#1.通过loader加载模板
			t = loader.get_template("模板名称")
			#2.将模板渲染成字符串
			html = t.render()
			#3.通过HttpResponse响应给客户端
			return HttpResponse(html)

	2.使用render直接加载并返回模板
		def index_views(request):
			return render(request,'模板名称')
4.模板的语法
	1.变量
		1.作用:允许将后端的数据传递给模板在模板中进行显示
		2.Django中允许作为变量传递给模板的数据类型
			字符串,数字,列表,元组,字典,函数,对象
		3.变量的语法
			变量们必须要封装到字典中才能传递给模板
			1.使用 loader 加载模板
				dic = {
					'变量1':'值1',
					'变量2':'值2',
					... ...
				}

				t=loader.get_template('模板名称')
				# 渲染成字符串时需要传递变量字典到模板中
				return HttpResponse(t.render(dic))
			2.使用render加载并返回模板
				dic = {
					'变量1':'值1',
					'变量2':'值2',
				}

				return render(request,'模板名称',dic)
		4.在模板中使用变量
			{
  {变量名}}
	2.标签
		1.作用
			将服务器端的功能嵌入到模板中
		2.语法
			{% 标签内容 %}
	3.标签详解
		1.comment 标签
			{% comment %}

			{% endcomment %}
			作用:在服务器端就被注释的内容,不会被渲染到客户端的

		2.for 标签
			作用:循环遍历 列表,字典,元组
			语法:
				{% for 变量 in 列表|字典|数组 %}
				{% endfor %}

				循环中允许使用 forloop 内置变量来获取循环相关的信息
					forloop.counter : 记录当前循环的次数(从1开始计算)
					forloop.first : 判断是否为第一次遍历
					forloop.last : 判断是否为最后一次遍历
		3.if标签
			1.if
				{% if 条件 %}
					条件满足时要执行的内容
				{% endif %}
			2.if ... else
				{% if 条件 %}
					满足条件时执行的内容
				{% else %}
					不满足条件时执行的内容
				{% endif %}
			3.if...elif...else
				{% if 条件1 %}
					满足条件1执行的内容
				{% elif 条件2 %}
					或满足条件2执行的内容
				{% elif 条件3 %}
					或满足条件3执行的内容
		
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值