目录
Django
1.Django框架介绍
- 什么是Django
Django是一个开源框架,2005年发布,采用python语言编写的,早期时主要做新闻和内容管理的网站的。Django本身提供了非常强大的后台管理系统
版本:
最高:2.1.2
使用:1.11.8
官网:https://www.djangoproject.com/
中文文档:http://djangobook.py3k.cn/2.0/ - 框架模式
MTV
M:Models - 数据库模型
T:Templates - 模板(网页)
V:Views - 视图
2.Django框架的安装
- 安装Django框架
- 查看已安装的Django版本
- 进入到终端以及python的交互模式
交互模式:python3 / ipython3 - 交互模式中输入:import django
如果未报错:当前环境中已经装好Django
如果报错:当前环境中没有Django - 查看已安装的版本
交互模式中:django.VERSION
- 进入到终端以及python的交互模式
- 安装Django
- 在线安装 - 使用 pip3
pip3:安装到python3
pip:安装到python2
sudo pip3 install django
(安装Django的最新版本)
sudo pip3 install django==1.11.8
(安装Django的指定版本) - 离线安装
- 下载安装包
- 解压安装包
tar -xvf Django-1.11.8.tar.gz - 进入到解压目录中,找到 setup.py 文件
sudo python3 setup.py install
- 在线安装 - 使用 pip3
- 查看已安装的Django版本
3.Django框架的使用
- 创建项目
- 创建目录
作用:用于保存所有的Django项目(可选)
指令:mkdir django - 创建项目
cd django
使用 django-admin 指令创建 Django 项目
语法:django-admin startproject 项目名
- 创建目录
- Django项目的结构介绍
- manage.py
包含执行django中的各项操作的指令(子命令)
如:
启动服务:runserver
创建应用:startapp
创建管理员:createsuperuser
... ... - 主目录(与项目名称一致的目录)
- __init__.py
项目的初始化文件,服务被启动,该文件自动被运行 - urls.py
项目的基础url配置文件(基础的路由配置) - wsgi.py
Web Server Gateway Interface
Web服务网关接口 - settings.py
项目的配置文件- BASE_DIR:获取当前项目的绝对路径
- DEBUG:是否启用调试模式
True:启用调用模式
False:不启用调试模式 - ALLOWED_HOSTS
设置允许访问到本项目的地址列表
如果为空的话,只有本机(localhost / 127.0.0.1)才能访问
如果允许在局域网中被外部机器访问的话:
推荐写 ['*'],表示任何能够表示该机器的地址都能访问到当前项目
如果允许被其他机器访问的话,启动服务时,必须使用以下方式:
./mange.py runserver 0.0.0.0:端口号 - INSTALLED_APPS
指定已安装的应用,如果有自定义应用的话,需要在此注册 - MIDDLEWARE
中间件,如果有自定义的中间件,需要在此注册 - ROOT_URLCONF
用于指定项目的基础路由配置文件 - TEMPLATES
指定模板的信息 - DATABASES
指定数据库的信息 - LNAGUAGE_CODE
语言设置,如果需要中文的话,允许将值更改为 'zh-Hans' - TIME_ZONE
指定时区,中国时区的话,允许将值设置为 'Asia/Shanghai'
- __init__.py
- URL的使用
- urls.py
默认在主目录中,主路由配置文件,会包含最基本的地址映射。
作用:通过urls中定义好的地址找到对应的视图处理函数 - urld的语法
作用:为了匹配用户的访问路径
from django.conf.urls import url
语法:
url(regex,views,kwargs=None,name=None)- regex:允许是正则表达式,匹配请求的url
- views:对应的视图处理函数的名称
- kwargs:字典,用来向views传参,如果没有参数可以省略
- name:为url起别名,在地址反向解析时使用
- 通过url向视图传参
- 使用正则表达式传参
使用子组传参,一个子组就是一个参数,要传递多个参数的话需要使用多个子组,中间用 / 隔开
子组 - ()
urlpatterns = [
#当访问路径是show/ 的时候,交给show_views处理
url(r'^show/$',show_views),
#当访问路径是show/ 两位数字的时候,交给show1_views函数
url(r'^show/(\d{2})/$',show1_views),
]
views.py
def show1_views(request,num1):
num1 表示的就是路径“show/”后面的第一个参数
pass
练习:
访问地址:localhost:8000/四位数字/两位数字/两位数字
在网页中输出:生日为:xxxx年xx月xx日 - 使用url()第三个参数 - 字典传参
dic = {
'name':'naruto',
'age':18,
}
url(r'^show3/$',show3_views,dic)
views.py
def show3_views(request,name,age):
pass
- 使用正则表达式传参
- urls.py
- manage.py
4.Django中的应用
- 什么是应用
应用就是网站中的一个独立的程序模块
在Django中,主目录一般不处理用户的具体请求,主目录主要做的是项目的初始化以及请求的分发(分布式请求处理),而具体的请求由各个应用去处理 - 创建应用
- 指令
./manage.py startapp 应用名称
ex:
./manage.py startapp news
格式图片
- 在 settings.py中进行注册
在INSTALLED_APPS 中追加引用名称
INSTALLED_APPS = [
'django.contrib.admin',
... ...,
'自定义应用名称',
]
练习:- 创建新项目 - netease
- 创建index应用,并注册
- 创建sport应用,并注册
- 创建music应用,并注册
- 创建news应用,并注册
- 指令
- 应用的结构组成
- migrations 目录
存放数据的中间文件 - __init__.py
应用的初始化文件 - admin.py
应用的后台管理配置文件 - apps.py
应用的属性配置文件 - models.py
Models 与 模型相关的映射文件 - tests.py
应用的单元测试文件 - views.py
定义视图处理的函数文件
- migrations 目录
- 分布式路由系统
在每个应用中创建 urls.py,内容的格式参考主目录的urls.py
当访问路径是 http://localhost:8000/music/xxx
则交给music的urls去处理
当访问路径是 http://localhost:8000/news/xxx
则交给news的urls去处理
当访问路径是 http://localhost:8000/music/index
则交给music的urls找到 Index_views 去处理
当访问路径是 http://localhost:8000/news
则交给news的urls找到 Index_views去处理
作业:
- 访问路径 http://localhost:8000/login
交给 Index 应用中的login_views 去处理 - 访问路径 http://localhost:8000/register
交给 index 应用中的 register_views 去处理 - 访问路径 http://localhost:8000/
交给 index 应用中的 index_views 去处理
nrwc