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
def index(request): return HttpResponse('Hello World!!!...')
|
指定路由规则来执行视图函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
from django.conf.urls import url,include from django.contrib import admin
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', include('home.urls')), ]
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 render(request,'a.html') love = 'ilikeyou'
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
| url(r'^abc/(?P<aa>[0-9]+)/$', views.abc_2003),
def abc_2003(request,aa): print(aa) return HttpResponse('abc_2003')
|