django
WEB应用的本质
socket网络编程,基于C/S架构,使用的是TCP/UDP协议进行数据传输,属于OSI七层中的传输层。
web应用是基于B/S架构,在服务端与网页之间交互时还需要通过使用HTTP(超文本传输协议),HTTP协议是属于OSI七层中的应用层。
Http协议包括:请求头,请求体,响应头,响应体
请求头和请求体是页面发送给服务端的数据,比如包括提交数据的方式,协议,ip端口,用户代理以及数据内容。
响应头是服务端发送给页面所需要添加规定的头部数据,响应体则是发送给页面用户可以直接看到的内容。
自定义WEB框架
我们可以自定义WEB框架,通过在页面提交不同的请求给服务端,每个请求可以对应一个url,服务端接收并识别不同的url,然后响应发送给页面对应不同的数据。
- 首先通过socket服务端进行数据传输。
- 然后服务端接收到客户端发送的不同的url,将url通过映射到对应的函数进行执行,这个映射过程称为路由系统(它在flask,django框架中都有应用),作用就是可以通过不同url拿到对应函数执行的返回值响应发送给客户端页面。
- 在执行函数过程中,可以通过html等模板引擎进行渲染,比如将服务端处理好的数据放入html模板中返回给页面,解析后便可得到动态的页面结果。
- 可以通过自己定义规则
- 使用第三方工具jinja2
django安装启动
django的安装,pip3 install django或用pycharm安装
django的创建,django-admin startproject xxx或pycharm创建
django目录结构,主要包括4个py文件:
- manage.py: 管理文件
- 项目同名的文件夹
- settings.py: 配置文件
- urls.py: 路由映射关系
- wsgi.py : socket服务端文件
django路由系统
from django.shortcuts import HttpResponse
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', index),
]
def index(request):
return HttpResponse('index')
django模板介绍
# f1.html页面:
# <h2>{{ name }}</h2>
from django.shortcuts import render
def f1(request):
return render(request, 'f1.html')
def f1(request):
name = 'kk'
return render(request, 'f1.html', {"name":name})
创建django项目的时候, 需要做的几个操作:
到settings.py中, 配置:
#1
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
# 逗号不能少
# static目录需要创建
#2
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
#3
'DIRS': [os.path.join(BASE_DIR, 'templates')]