首页 > 其他分享 >Django基础介绍

Django基础介绍

时间:2023-07-26 20:34:46浏览次数:37  
标签:web socket 基础 py sock 介绍 django Django data

web应用简介

Django框架是一个专门用来开发web项目的框架

1.web应用程序是什么

  web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件

2.应用程序又两种模式c/s、b/s

  Django就是开发b/s程序的,所依,我们就认为浏览器是客户端,Django框架就是服务端

3.web应用程序的优点

  1.只需要一个浏览器即可

  2.节省资源空间

  3.不需要跟新,服务端更新,客户端也会更新

  4.可以跨平台使用

4.web应用缺点

  一旦web服务端宕机,直接影响客户端正常运行

 

什么是web框架:框架的意思就是别人提前写好的,我们只需要按照人家的要求在固定的位置写固定的代码

 

自己写一个web框架(推到框架的演变、代码无需掌握、重点看思路)

 web应用程序主要就是B/S架构的,浏览器就是客户端、我们现在开发出一个服务端出来即可

http协议相关知识点

1. 四大特性
  基于请求和响应
  基于TCP协议之上的应用层协议
  无状态
   短连接
2. 请求数据格式
  请求首行(请求方式、协议版本号)
   请求头
   \r\n
   请求体
3. 响应数据格式
  响应首行(响应状态码)
   响应头
  \r\n
  响应体
4. 响应状态码
  1xx
  2xx
  3xx
  4xx
  5xx

socket模块写出服务端

原始版服务端:用浏览器无法正常运作

import socket

sever = socket.socket()
sever.bind(('127.0.0.1', 8000))
sever.listen(5)
while True:
    sock, addr = sever.accept()
    data = sock.recv(1024)
    print(data.decode())
sock.send(data) sock.close()

第一次改进:客户端接受服务端发来的消息

import socket

sever = socket.socket()
sever.bind(('127.0.0.1', 8000))
sever.listen(5)
while True:
    sock, addr = sever.accept()
    data = sock.recv(1024)
    print(data.decode())
  sock.send(b‘HTTP/1.1 200 ok \r\n\r\n ’)# 符合浏览器http协议格式,运用的tcp协议的流式协议
    sock.send(data)
    sock.close()

第二次改进:在浏览器地址栏中写什么后缀就返回什么内容

思路:

  1. 在后端肯定是要知道你在浏览器输入了什么后缀
  2. 判断是什么后缀就返回什么内容

import socket

sever = socket.socket()
sever.bind(('127.0.0.1', 8001))
sever.listen(5)
while True:
    sock, addr = sever.accept()
    data = sock.recv(1024)
    sock.send(b'HTTP / 1.1 200 ok \r\n\r\n')
    print(data.decode('utf8'))
    # 把字节类型转为字符串
    data_str = data.decode('utf8')
    # 进行空格切分把字符串转为列表显示
    data_list = data_str.split(' ')
    # 索引取出后缀名
    name_extension = data_list[1]
    # 做判断
    if name_extension == '/index':
        sock.send(b'index')
    elif name_extension == '/login':
        sock.send(b'login')
    else:
        sock.send(b'404 error')
    sock.close()

存在一些问题:

  1. socket部分我们每次都要书写(要写重复代码)
  2. 我们需要自己来处理HTTP格式的数据,自己做切分,自己来取值等比较麻烦
  3. 并发问题没有解决

如何解决这些问题:借助于wsgiref模块

 

借助于wsgiref模块(内置模块)

解决了socket部分不用我们写,程序员已经写好放在wsgiref模块中
它解决了并发问题 WSGIServer类------>wsgiref------>它能够解决的并发量不高----->本地使用wsgiref服务器--------------->代码上线之后,就不是由它----------->uwsgi服务器(它支持的并发量更高)

def run(env, response):
    """
    :param env: 客户端每次发起请求的时候,所携带的数据都在这个里面,就类似属于是request
    :param response: 是后端给浏览器返回的数据
    :return: 返回给浏览器查看的
    """
    print(env)  # 把HTTP格式的数据都封装到了大字典里去了
    response("200 OK", [])
    # 我们取到当前的后缀内容
    current_path = env.get('PATH_INFO')
    # 做判断
    if current_path == '/index':
        return [b'index']
    elif current_path == '/login':
        return [b'login']
    else:
        return [b'404 error']


if __name__ == '__main__':
    server = make_server(host='127.0.0.1', port=8000, app=run)
    """
        这句话写完就会实时监听127.0.0.1:8000这个地址
        只要有客户端来访问这个地址,那么,我服务端就能够接收到客户端的请求, 就类似于是我们的socket端
        
        app=run:只要有客户度发过去请求,那么就会把处理的请求交给run这个函数来处理,run是个函数名(在django中用的就是函数名)
        
        后面你要学的flask框架这个地方写的是对象,而不是函数名
        obj()-------------->会触发类的__call__方法--------->flask框架的启动代码就在__call__里面写着的,是入口
    """
    # 启动服务端
    server.serve_forever()

views.py----------------->视图文件--------->主要就是写后端的逻辑的
urls.py------------------>路由文件(后缀)---------->路由与视图函数的对应关系
templates---------------->专门用来存储html文件的

ps:以后我们要想增加一个后缀,只需要在urls.py中写一个路由和在views.py中写一个视图函数即可.

 Django框架的学习

Django是Python中使用最多的一个主流框架!

Python中的主流框架
Django:
  主要用来开发web项目的,它比较笨重,一般小型项目不怎么使用它,大而全
flask:
  它是一个比较轻量级的框架,它主要依赖于第三方的模块,不断的安装第三方模块,小而精
tornado:
  异步非阻塞,解决高并发比较擅长

版本问题:
  1.X(老项目) 2.X(新项目) 3.X(新版本)
  1.x和2.x本质上差别不是很大,但是也有区别,我们讲1.x,附带讲2.x的区别
  在drf中,都要使用2.x以上版本,drf这个框架要求django的版本必须是2.x以上

注意事项:

  1. 你的项目名称和应用名称以及其他文件的名称都要使用英文的,坚决不能够使用中文的
  2. 你的计算机名称最后都使用英文的
  3. 一个pycharm窗口只打开一个django项目,不能够一个窗口打开很多个django项目

如何使用Django
1. 安装django
  pip install django==1.11
django版本要和解释器的版本要匹配:
  django2.X版本------------>解释器的版本最后3.6以上

 如何验证django是否安装成功
  在cmd中输入:django-admin------>如果有输出内容就说明安装成功

2.创建项目

  1 命令行创建

  你可以先切换路径,切换到你想把django项目放到的路径里
    django-admin startpeoject 项目名
    django-admin startproject myfirst_dj
  2 pycharm创建
    File----->New Project ----->django

3. 如何启动项目
  1. 命令行启动
    先把路径切到manage.py所在的路径
    python3 manage.py runserver
    项目启动起来之后,会监听:http://127.0.0.1:8000/
    默认端口号是:8000
  如何修改端口号:
    python3 manage.py runserver 127.0.0.1 8001

  2. pycharm启动
    点击绿色按钮
    访问项目: http://127.0.0.1:8000/

4. Next, start your first app by running python manage.py startapp [app_label].

 如何创建应用
  1. 命令行创建
    python manage.py startapp [app_label].
    python manage.py startapp app01.
  2. pycharm创建

当你把应用创建出来之后,紧接着要做的一件事情就是:注册应用
在配置文件中注册应用,这个应用才生效

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',  # 全称
    'app01',  # 简称
]

主要文件介绍

myfirst_dj        # 项目名称
    app01        # 应用名称
        migrations    # 这个是用来存储数据库迁移记录
        __init__.py
        admin.py    # 跟后台项目注册等相关的
        apps.py        # 跟一些注册相关
        models.py    # 跟数据库打交道的 模型层----->MTV模型
        tests.py     # 测试文件
        views.py    # 视图文件,写一些后端逻辑
myfirst_dj
    __init__.py
    settings.py        # 配置文件相关的
    urls.py            # 路由相关的
    wsgi.py            # 内部封装的wsgiref服务器,uwsgi服务器之后,这个文件就没用了uwsgi.py
    db.sqlite3        # Django自带的小型数据库
manage.py            # Django框架的入口文件

应用

django主要开发的就是一款web应用!
Django框架类似于是一所大学(空壳子)

应用就是大学里面的二级学院(具备独立的功能模块)
 一个应用就是一个独立的功能模块
比如:
user
order
address
cart
 应用名一定要见名知意,但是我们教学为了方便,我都使用app01、02、03...

三板斧

The view app01.views.index didn't return an HttpResponse object. It returned None instead.
return HttpResponse("OK")  # 返回字符串的
return render(request, 'index.html')  # 返回html文件的
return redirect('http://www.baidu.com') # 重定向

#自己创建的templates文件夹,要在配置文件注册
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
        },
    },
]

自己创建的templates文件夹,要在配置文件注册
 

 

标签:web,socket,基础,py,sock,介绍,django,Django,data
From: https://www.cnblogs.com/shanghaipudong/p/17583486.html

相关文章

  • Cobbler文件目录介绍
    /etc/cobbler   #配置文件目录/etc/cobbler/settings   #cobbler主配置文件/etc/cobbler/dhcp.template    #DHCP服务的配置模板/etc/cobbler/tftpd.template     #tftp服务的配置模板/etc/cobbler/rsync.temp......
  • Django
    Web应用的简介Web应用程序是什么?Web应用程序是一种可以通过Web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了。应用程序有两种模式:C/S、B/SDjango就是开发的B/S应用程序,所以,我们就认为浏览器就是我们的客户端,Django框架就是服务端。Web应用程序的优点:......
  • Django模版传值时HTML转义
    前情提要:Django项目中,通过Django模版往前端传值,发现&变成了&amp;原因:模版对上下文传递的字符串进行输出时,会对某些字符串进行转义小于号<转成<大于号>转成>单引号‘转成&#39;双引号“转成"与符号&“转成&amp;转义是由过滤器escape实现的,模版默认带有转义功能使用方......
  • Django的MVC模型和MTV
    基本介绍Django是一个由Python编写的一个开放源代码的Web应用框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务Django本身基于MVC模型,即Model(模型)+View(视图)+Controller(控制器......
  • 国产化的接口测试、接口自动化测试工具Apipost的介绍及使用
    Apipost介绍:Apipost是API文档、API调试、APIMock、API自动化测试一体化的研发协作赋能平台,它的定位Postman+Swagger+Mock+JMeter。Apipost是接口管理、开发、测试全流程集成工具,能支撑整个研发技术团队同平台工作,主要使用者为前端开发、后端开发、测试人员。Apipost优......
  • java基础
    注释单行注释//这是单行注释多行注释/*一段*多行注释*/文本注释/****@paramargs*/关键字是被Java语言赋予特殊含义,具有专门用途的单词,比如class,int,double均为Java已经预设好的;组成关键字的字母全部小写,注意String不是关键字;goto与cons......
  • 国产化的接口测试、接口自动化测试工具Apipost的介绍及使用
    Apipost介绍:Apipost是API文档、API调试、APIMock、API自动化测试一体化的研发协作赋能平台,它的定位Postman+Swagger+Mock+JMeter。Apipost是接口管理、开发、测试全流程集成工具,能支撑整个研发技术团队同平台工作,主要使用者为前端开发、后端开发、测试人员。Apipo......
  • GSAP 基础
    GreenSockAnimationPlatform(GSAP)是一个业界知名的动画库,它被1100多万个网站使用,有超过50%的获奖的网站都是用了它。不管是在原生环境中,还是任意的框架中,你可以使用GSAP去让非常多的东西动起来。不管你是想要去让UI界面产生交互动画,还是SVG图形产生动画,甚至是Threejs还是Reac......
  • 记录--canvas基础操作
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助1.以下是一些有关使用Canvas的技巧:绘制基本形状:Canvas可以用于绘制各种基本形状,如矩形、圆形、线条等。使用fillRect()方法绘制矩形,使用arc()方法绘制圆形,使用lineTo()方法绘制线条等。绘制文本:使用fil......
  • awk的基础应用
    awk的基础应用AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一awk命令的基本格式为:awk-F“”‘{print'commands'}’filename-F:指定分隔符-vvar=val:在执行处理过程之前,设置一个变量var,并给其设备初始值为valawk保留字......