Django第一篇

手撸 简易版web框架 获取静态网页
import socket

sever=socket.socket()
sever.bind(('127.0.0.1',8080))
sever.listen(5)

while True:
    conn,addr=sever.accept()
    while True:
        deta=conn.recv(1024)
        print(deta)
        conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
        with open('login.html','r',encoding='utf-8')as f:
            for line in f:
                conn.send(line.encode('utf-8'))
        conn.close()
推导DJango 思路;


第一步;手撸一个服务器,让浏览器来访问自己手撸的服务器

第二步;浏览器无法识别服务器发送出去的信息,因为不是HTTP协议

第三步;给发送出去的东西写在一个html文件中,在引用,添加HTTP格式发送

第四步;浏览器展示我们发送的数据

第5步;我们将浏览器发过来的请求打印出来
请求首行  b'GET / HTTP/1.1\r\n
请求头(一堆k,v键值对)\r\n
r\n
请求体(post请求携带的数据)

第5步,我们对请求数据格式切分处理,拿到输入网址的那个英文单词if 判断
从而实现了根据浏览器的请求不同,来反映不同的数据
第6步;我们导入一个wsgiref模块,他的作用就是帮我们写socked,还有处理
HTTP请求的数据,run函数的那个env就是处理好的HTTP数据,{k,v}形式
从而我们可以通过env里的PATH-INFO来获取请求的那个英文单词

第7步,根据拿到的那个因为后缀,我们可以定义一个映射关系,将后缀与函数一一对应,命名为 urls,请求后缀与函数的对应
第8步,实现了路由与视图函数匹配,意味着不同请求,返回不同的页面
第9步,我们把时间发送给浏览器,先在HTML写一个@@,然后读出来,在将时间替换@@
这样我们就把时间发给了浏览器
第10步,但是这种方法无法实现点取值的效果,后来我们采用了一个jianja2来实现模板渲染
使得前后端数据交互更加方便,如果继续用替换数据交互局限性很大我们将后端生成的数据
直接传给前端页面使用,并且前端页面可以灵活的操作数据,就是数据类型没有改变,我么们c
称之为模板渲染
模板渲染 将字典传递给前端页面,前端通过变量名获取字典,再对数据操作
在发给浏览器,模板渲染不仅可以渲染后端的数据,还可以渲染数据库的数据
http
四大特点;1基于TCP/IP协议作用与应用层的协议
2.基于请求响应
3.无状态,(来一万次待你如初见)
4.无连接  一次请求一次链接,请求完毕断开链接

数据格式
请求首行
请求头(一堆k,v键值对)
r/n
请求体(post请求携带的数据)


状态吗
1xx服务器已经成功接受到你的数据正在处理,你可以继续提态码
2xx 请求成功,服务器已经将你请求的数据发给你了
3xx重定向
4xx 请求资源不存在
5xx 服务器错误
静态网页
数据写死了,万年不变
动态网页
页面的数据是从后端动态获取的
比如后端获取数据库数据后传递给前端页面
模板渲染
后端生成的数据直接传递给前端页面使用,前端可以灵活操作数据,联想字典可以点操作数据w
<    p>{{ user_dic }}</p>
<p>{{ user_dic.name }}</p>
    <p>{{ user_dic['password'] }}</p>
    <p>{{ user_dic.get('name') }}</p>
下载Django
命令行直接下载pip3 install django==1.11.11
验证是否下载成功django-admin
创建项目
方式1(命令行创建):
创建django项目
                django-admin startproject 项目名
            创建app应用
                python3 manage.py startapp app01
            启动django项目
                python3 manage.py runserver 
            ps:用命令行创建django默认不会自动创建templates文件夹
            
方式2
FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
            创建app
                pycharm命令行创建
                    python3 manage.py startapp app01
                Tools下面run manage task功能栏
            启动点小绿色箭头
            
        强调:
            1.用django一定要保证只有一个在运行状态  切记切记!!!!!!!
            2.一定记得清浏览器的缓存
小白3板斧
from django.shortcuts import render,HttpResponse,redirect

HttpResponse 返回字符串
render 返回一个HTML页面
redirect 重定向
两种给前端页面传值的方式
    
                def reg(request);
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',{'user_dict':user_dict})
        
        def reg(request):
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',locals())
                

 

转载于:https://www.cnblogs.com/jingandyuer/p/10980783.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值