1。做一个最简单web服务器
from wsgiref.simple_server import make_server def application(environ,start_response): start_response('200 ok', [('Content-Type', 'text/html')])#响应头 print('path', environ['PATH_INFO'])#打印客户端的地址 path=environ['PATH_INFO'] if path=='/alex': return [b'404 NOT FOUND
'] return [b'hello world
']#响应体 ,environ中包含请求信息的dict对象 http1=make_server('127.0.0.1',8080,application) print('begin http') http1.serve_forever()
2.MVC模式和MTV模式
mvc也就是m模型,v-html文件,c-控制器
django中的mtv模式==m数据库,t模板对象,v=各种函数
mtv模式仅针对django,
3.django运行流程
用户输入url-匹配到响应路径-运行响应函数-和数据库进行联系-返回响应数据
4。利用django完成一个简单应用-时间显示
首先在pycharm中新建一个django项目,观察django文件夹,其中项目名称下有一个相同名称的文件夹,其内有:
setting:关于项目设置
urls:关于项目路径
令有以应用名为文件夹名的,内有:
admin:django自动创建的管理后台
models:关于数据库操作
tests:建立的测试页面
views:放入路径触发的各类函数
=====================================
首先,在路径中添加show_time路径
urlpatterns = [ path('admin/', admin.site.urls), re_path(r'time/',views.show_time) ]
在views中写这个函数
def show_time(request): time1=time.ctime() return render(request,'index.html',locals()),其中request为必填项,这里面包含了客户端的信息
此时,需要返回需要渲染的数据,在templates中新建html也就是模板文件,在html中加入{{time1}},这样在将这个模板文件进行传染的时候,会自动对应变量并且生成html文件
5.django中的静态文件static
在进行路径匹配的时候,严格按照正则表达式进行,这样可以区分该运行哪个函数,当找到一个符合条件的正则时,则不再运行后面的。
==对url进行分发
如果url过多时,可以在每个app中添加一个url文件,里面写上app的相关路径,然后在项目的url的进行分流===
静态文件:
Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件,比如说某个html需要使用jquery进行渲染,需要js文件,当通过setting中的static路径设置好之后,django就会自动通过这里来找文件
STATIC_URL = '/static/'#这里自己引用时的路径 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),#告诉django的绝对路径 )
在静态文件中,只要路径写的时别名,这样django就可以直接通过绝对路径来找到文件,注意:只能按照别名来找,通过真实的名称找不到
第二种方法:
在文件中,顶部写上
{% load staticfiles %}
这里时装在静态文件
然后在引入静态文件的时候:
src={% static jquery311.js%}也可以引入静态文件==推荐使用
如果需要使用app中的static,需要在static_url中加入app-static的路径,之后就可以引入了,
如果有多个app怎么办?
在static中根据app名称建立不同的文件,引入的时候,写上文件夹名
src={static 'blog/css/jquery'}
templates类似原理
6.Django控制系统
django url
针对不同的路径,运行不同的函数,返回不同的模板
path(正则,函数,参数,别名)
当使用别名的时候,django可以识别别名,并且运行正确的函数,