windows安装pip

win+r:输入cmd,然后在命令行中输入pip list显示版本号看是否安装过。

去官网下载压缩包.tar.gz

解压文件

在dos窗口进入setup.py的目录中,运行python setup.py install

安装后会在你的python目录下生成scripts目录

配置环境变量:D:\Program Files (x86)\python\Scripts\

在终端中输入pip install django

在环境变量中加入Django的bin路径,D:\Program Files (x86)\python2\lib\site-packages\django\bin

创建Django项目:django-admin.py startproject 文件夹名

linux自带pip

pip是Python的包管理工具,可以快速安装各种扩展包,并能解决包之间的依赖关系

pip3 是指定Python3的环境

在安装时如果指定 sudo 则安装到系统环境中

如: sudo pip3 install Django==1.11.*

linux下pip国内镜像配置

1
2
3
4
5
6
7
Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)

内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

搭建Django项目

1
2
3
4
5
6
7
django-admin startproject web

# 启动项目
cd web
python3 manage.py runserver

# 在浏览器通过 127.0.0.1:8000 访问

监听所有IP

修改项目同名目录下的配置文件 web/web/settings.py

1
2
3
4
5
6
ALLOWED_HOSTS = ['*']

#添加
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]

在项目中创建应用,输出 Hello World

创建应用

1
python3 manage.py startapp home

编辑视图函数

1
2
3
4
5
6
7
8
from django.shortcuts import render
from django.http import HttpResponse
## Create your views here.

# 创建一个试图函数 输出hello world
def index(request):
# 在试图函数中进行响应
return HttpResponse('Hello World!!!...')

指定路由规则来执行视图函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1, 配置应用路由
# 找到项目同名的文件夹 web/web/urls.py
from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('home.urls')),
]

# 2,在home应用中 创建一个urls.py文件,指定规则和视图函数
from django.conf.urls import url
from . import views

urlpatterns = [
url(r'^$', views.index),
]

请求的流程

用户输入url地址发起请求,服务器接收到请求后,交给跟路由(项目同名目录下的urls.py)

根路由解析后制定应用下的子路由

子路由解析地址,调用对应的视图函数 响应

项目目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
web
├── home
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── manage.py
└── web
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

使用模板文件

定义模板引擎的配置

找到settings.py文件,配置模板目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

1,在manage.py的同级目录下创建 templates 文件夹

2,在视图函数中使用render函数加载指定模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def demo(request):
# 响应信息
# return HttpResponse('AABBCC...')

# 响应一个模板文件 参数1 请求对象 参数2 模板文件
return render(request,'a.html')
# 定义数据
love = 'ilikeyou'

# 响应一个模板文件 参数1 请求对象 参数2 模板文件
# return render(request,'a.html')

# 响应一个模板文件 参数1 请求对象 参数2 模板文件 参数3 分配数据
return render(request,'a.html',{'aaa':love})

路由的定义

url ==> 统一资源定位符

指得就是请求的 (url)地址

http://python.itxdl.cn/html/tutorial/

http://python.itxdl.cn/html/teachers/

可以在项目中指定请求的url地址,来交给对应的视图函数进行解析

路由的特点:

路由就是在urls中进行规则的配置

按照从上往下的顺序来执行

如果匹配到,则加载指定的视图函数来执行

如果匹配不到,则抛出 404

1
2
3
4
http://127.0.0.1:8000/web/articles/2003/

web/ 根路由
articles/2003/ 子路由

路由参数

路由参数就是把 url路径 中的一部分作为参数来使用

在定义路由规则时,使用小括号() 括起来的内容,将作为参数传递给视图函数

1
2
3
4
5
6
7
## 路由规则
url(r'^articles/([0-9]{4})/$', views.year_archive),

##对应的视图函数
def year_archive(request,year):
print(year)
return HttpResponse('year_archive')

命名组 命名参数

和路由参数一样是用来获取url中路径作为参数来使用

不同的是 命名组会把当前参数作为 关键字参数传递给视图函数,因此对应的视图函数必须有关键字参数

1
2
3
4
5
6
7
# 命名组 使用?P<变量名> 方式来定义
url(r'^abc/(?P<aa>[0-9]+)/$', views.abc_2003),

#在对应的视图函数中则必须有对应的关键字参数
def abc_2003(request,aa):
print(aa)
return HttpResponse('abc_2003')