Django
今日内容:
1. web应用的本质
回顾:
socket网络编程:
架构: C/S架构
协议:TCP/UDP协议
工作地点:传输层
B/S架构:
协议:HTTP协议
工作地点:应用层
PS:
字节转换为字符串:bytes('XXX',encoding = 'utf8')
字符串转换为字节:str('XXX',encoding = 'utf8')
2. 自定义一个web框架
目标:
将自定制的server变成一个动态的server
请求头的时候2个换行(/r/n/r/n)代表结束
HTTP协议:
请求头
请求体
响应头
响应体
改造之后一个动态的server
路由系统:
def f1():
return
def f2():
return
def f3():
return
......
routes = [
('xxx',f1),
('ooo',f2),
......
]
路由系统:将客户端请求的url映射到相应的函数,然后执行函数
渲染系统:将我们需要的数据渲染到写好的html页面中
自己写web框架:
a. 自己写socket服务端
b. 路由系统:
url--->函数
c. 模板引擎渲染:
自己定义的规则
使用第三方的工具(jinja2)
web框架的分类
第一维度的分类:
1. a,b,c ----> tornado
2. a(引入第三方),b,c -----> Django(wsgiref/uwsgi)
3. a(引入第三方),b, c(引入第三方)----->flask
第二维度的分类:
1. Django
-orm
-session
-form表单验证
.......
2. 其他
3. Django的安装和启动
Django的安装:
-
pip3 install django == 1.11.22
-
pycharm
Django的创建:
a. Django-admin startproject XXX
b. pycharm
Django的启动
a. django-admin startproject mysite
settings.py.py:配置文件
url.py:路由映射文件
wsgi.py:socket服务端文件
manage管理文件
4. Django的路由介绍
添加函数和路由的关系
urlpatter = [
# url(r'^admin/',admin.site.urls)
url(r'^index/',index)
]
def index(request):
return HttpResponse('index')
5. Django的模板介绍
列表的渲染
<li>{{li.0}}<l1> 类似于列表取值[]0
......{{li.1}}......
字典的渲染
......{{dict.age}}......
{%for items in dict.values %}
- {{items}}
{% endfor %}
以后再去创建Django项目的时候,我们需要的几个操作:
到settings.py中配置:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
)
逗号不能少
static目录需要创建
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',
]
'DIRS':[os.path.join(BASE_DIR,'templates')]
Django的连接数据库操作:
pymysql连接和Django的orm连接