首页 > 编程语言 >Python基础day53 Django

Python基础day53 Django

时间:2023-07-26 20:36:07浏览次数:34  
标签:__ web return Python Django py django day53

web应用的简介

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

1. web应用程序是什么?

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

2. 应用程序与有两种模式

    Django就是开发的B/S应用程序,所以,我们就认为浏览器就是我们的客户端、Django框架就是服务端

3. web应用程序的优点

  1. 只需要一个浏览器即可,不需要安装其他应用软件

  2. 节省用户的空间资源

  3. 他们不需要更新,因为服务端只要已更新版本,会直接影响客户端的更新

  4. 跨平台使用

4. web应用程序的缺点

  一旦web应用的服务端宕机,直接影响客户端的正常访问

自制简单的web框架(推到框架的演变、重点理解思路)

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

可以认为框架就是客户端的服务端

  通过socket写一个服务端出来

HTTP协议相关知识

 1. 四大特性

  基于请求和响应

  基于TCP协议之上的应用层协议

  无状态

  短连接

2. 请求数据格式

  请求首行(请求方式、协议版本号)

  请求头

  \r\n

  请求体

3. 响应数据格式

  响应首行(响应状态码)

  响应头

  \r\n

  响应体

4. 响应状态码

  1xx

  3xx

  3xx

  4xx

  5xx

socket服务端

import socket

server = socket.socket()
server.bind(('127.0.0.1', 8000))
server.listen(3)
while True:
    # 接收数据
    sock, addr = server.accept()
    # 拿到客户端发来的数据
    data = sock.recv(1024)  # bytes类型的
    print(data.decode('utf-8'))
    # 给客户端回消息
    # 发送符合HTTP协议的数据格式
    sock.send(b'HTTP/1.1 200 OK \r\n\r\n')  # 流式协议特性
    sock.send(b'hello django')
    sock.close()

如何做到在浏览器地址栏中写什么后缀就返回什么内容?

思路:

  1. 在后端需要知道在浏览器输入了什么内容

  2. 判断是什么后缀就返回什么内容

    conn.send(b' ')

浏览器每次朝后端发起请求的时候,都会多一次:/favicon.ico

设置浏览器标题栏的小图标:

<link rel="shortcut icon" href="https://csdnimg.cn/public/favicon.ico" >

href后面填图标的地址

借助于wsgire模块(内置模块,直接使用)

from wsgiref.simple_server import make_server
from urls import urls
from views import error
'''
views:def index():
            return 'index'
urls:
urls = (
    ('/index', index),
    ('/login', login),
    ('/func', func),
    ('/home', home),
)
'''

'''
解决了socket部分,不用我们自己写了,在wsgiref模块中人家帮我们写了
它解决了并发问题 WSGISever类------>wsgiref--------->它能够解决的并发量不高
------>本地使用wsgiref服务器-------->代码上线后,就不用他
-------->uwsgi服务器(它支持的并发量更高)
代码上线之后会使用 Nginx + 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']

    func_name = None
    for url in urls:
        if current_path == url[0]:
            func_name = url[1]

    if func_name:
        res = func_name()
        return [res.encode('utf8')]
    else:
        res = error()
        return [res.encode('utf8')]


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文件的
"""

# 以后我们要想增加一个后缀,只需要在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',  # 简称
]
****************************************************************************************

# 以后我们在哪里写代码呢?
views.py
urls.py

 主要文件介绍

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.

from django.shortcuts import render, HttpResponse, redirect

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')],
        '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,return,Python,Django,py,django,day53
From: https://www.cnblogs.com/zfq132/p/17582755.html

相关文章

  • Django基础介绍
    web应用简介Django框架是一个专门用来开发web项目的框架1.web应用程序是什么web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件2.应用程序又两种模式c/s、b/sDjango就是开发b/s程序的,所依,我们就认为浏览器是客户端,Django框架就......
  • Python学习4
    Python学习(二)1Python集合1.1集合(Set)集合是无序和无索引的集合。在Python中,集合用花括号编写。1.2访问项目您无法通过引用索引来访问set中的项目,因为set是无序的,项目没有索引。但是您可以使用for循环遍历set项目,或者使用in关键字查询集合中是否存在指定值。......
  • Django
    Web应用的简介Web应用程序是什么?Web应用程序是一种可以通过Web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了。应用程序有两种模式:C/S、B/SDjango就是开发的B/S应用程序,所以,我们就认为浏览器就是我们的客户端,Django框架就是服务端。Web应用程序的优点:......
  • 用Python为接口自动生成测试用例
    基于属性的测试会产生大量的、随机的参数,特别适合为单元测试和接口测试生成测试用例尽管早在2006年haskell语言就有了QuickCheck来进行”基于属性的测试“,但是目前来看这依然是一个比较小众的领域,参考资料有限,本文如有不足,欢迎指正。1.基于表的测试在过去的测试实践中,执行测......
  • Django模版传值时HTML转义
    前情提要:Django项目中,通过Django模版往前端传值,发现&变成了&amp;原因:模版对上下文传递的字符串进行输出时,会对某些字符串进行转义小于号<转成<大于号>转成>单引号‘转成&#39;双引号“转成"与符号&“转成&amp;转义是由过滤器escape实现的,模版默认带有转义功能使用方......
  • 软件测试|超好用超简单的Python GUI库——tkinter(十四)
    前言我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。我们可以通过tkinter的画布控件Canvas来实现绘制功能。Canvas画布控件Canvas控件具有两个功能,首先它......
  • Django的MVC模型和MTV
    基本介绍Django是一个由Python编写的一个开放源代码的Web应用框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务Django本身基于MVC模型,即Model(模型)+View(视图)+Controller(控制器......
  • 软件测试|超好用超简单的Python GUI库——tkinter(十五)
    前言上一篇文章我们介绍了tkinter的Canvas画布控件,并且使用画布控件绘制了线条,本篇文章我们将介绍使用Canvas绘制更多图形。参数介绍属性说明activedash当画布对象状态为"active"的时候,绘制虚线activefill当画布对象状态为"active"的时候,填充颜色activest......
  • 软件测试|超好用超简单的Python GUI库——tkinter(十六)
    前言我们在使用各种软件时,菜单是我们最常用的功能之一,菜单以可视化的方式将一系列的“功能选项卡”进行分组,并在每个分组下又“隐藏”了许多其他的“选项卡”。当打开菜单时,这些选项卡就会“显式”的呈现出来,方便用户进行选择,比如我们常用的QQ音乐播放器,如下图:tkinter同样给我......
  • Exception: Not found: 'python/cv2/py.typed'
    CopyingfilesfromCMakeoutputcreatingdirectory_skbuild/linux-x86_64-3.6/cmake-install/cv2copying_skbuild/linux-x86_64-3.6/cmake-install/python/cv2/python-3/cv2.abi3.so->_skbuild/linux-x86_64-3.6/cmake-install/cv2/cv2.abi3.socopying_skbuild/linu......