首页 > 其他分享 >Django

Django

时间:2023-07-26 19:13:40浏览次数:35  
标签:Web 浏览器 py 应用程序 django Django

Web应用的简介

Web应用程序是什么?

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

应用程序有两种模式:C/S、B/S

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

Web应用程序的优点:

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

  2. 节省用户的资源空间

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

  4. 跨平台使用

Web应用程序的缺点:

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

Web框架:

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

手撸Web框架

推导框架的演变,代码无需掌握,重点看思路。

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

HTTP协议的相关知识:

四大特性:

  基于请求和响应

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

  无状态

  短连接/长连接

请求数据格式:

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

  请求头

  /r/n

  请求体

响应数据格式:

  响应首行(响应状态码)

  响应头

  /r/n

  响应体

响应状态码:

1xx 、2xx 、3xx 、4xx 、5xx

 

当我们手写Web框架会出现这种页面,是因为服务端发送的数据不符合HTTP协议规定的格式

 

 代码:服务端

import socket
sever = socket.socket()
sever.bind(('127.0.0.1',8000))
sever.listen(3)
print('开始接收数据')
while True:
    conn,addr = sever.accept()
    data = conn.recv(1024)
    print(data.decode('utf8'))
    # 使用流式协议规范发送的数据格式
    conn.send(b'HTTP/1.1 200 ok \r\n\r\n')
    conn.send(b'hello')
    conn.close()

结果:

网页显示:

 问题:怎样做到在浏览器的地址栏中写什么就显示什么?

思路:

  1. 在后端肯定是要知道我们在浏览器输入了什后缀

  2. 进行判断,判断是什么后缀就返回什么

浏览器每次朝后端发起请求的时候,都会多一次:/favicon.ico(图标地址),可以先忽略。

 

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

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

from wsgiref.simple_server import make_server

解决了socket部分,不需要我们自己写了,在wsgiref模块里人家帮我们写了。

它解决了并发问题WSGIServer类------>wsgiref------>它能够解决的并发量不高----->本地使用wsgiref服务器--------------->代码上线之后,就不是有它----------->uwsgi服务器(它支持的并发量更高)

代码上线之后会使用 Nginx + uwsgi

代码:

from wsgiref.simple_server import make_server
def run(env,response):
    # env:类似于request,客户端每次发起请求的时候,所携带的数据都在这个里
    # response:后端给浏览器返回的数据
    print(env) # 将HTTP格式的数据都封装到了大字典里去了
    response("200 OK",[])
    current_path = env.get('PATH_INFO')
    # 进行判断
    if current_path == '/index':
        return [b'index'] # return: 返回给浏览器查看的
    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) #run是个函数名(在django中用的就是函数名)
    #  app=run:只要有客户度发过去请求,那么就会把处理的请求交给run这个函数来处理
    #启动服务端
    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本质上差别不是很大,但是也有区别。

在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。如果有输出内容就说明安装成功

创建项目:

  1. 命令行创建:

  可以先切换路径,切换到你想把Django项目放到的路径里

  命令:django-admin startproject 项目名

  2. pycharm创建

  File下的New Project 中的django

启动项目:

  1. 命令行启动(cmd)

  先把路径切到manage.py文件所在路径,然后再输入:python36 manage.py runserver 

  项目启动起来之后,会监听:http://127.0.0.1:8000/

  默认端口号是:8000

  如何修改端口号:python36 manage.py runserver 127.0.0.1 8001

  2. pycharm启动:点击启动按钮

  访问项目:http://127.0.0.1:8000/】

创建应用:

  1. 命令行创建

    python manage.py startapp [app_label].

    python manage.py startspp 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 

    tests.py

    views.py

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

标签:Web,浏览器,py,应用程序,django,Django
From: https://www.cnblogs.com/Lucky-Hua/p/17582592.html

相关文章

  • Django模版传值时HTML转义
    前情提要:Django项目中,通过Django模版往前端传值,发现&变成了&amp;原因:模版对上下文传递的字符串进行输出时,会对某些字符串进行转义小于号<转成<大于号>转成>单引号‘转成&#39;双引号“转成"与符号&“转成&amp;转义是由过滤器escape实现的,模版默认带有转义功能使用方......
  • Django的MVC模型和MTV
    基本介绍Django是一个由Python编写的一个开放源代码的Web应用框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务Django本身基于MVC模型,即Model(模型)+View(视图)+Controller(控制器......
  • django 初识
    一、手撸web框架推导框架的演变过程,思路是重点1、写一个服务端importsocketserver=socket.socket()server.bind(('127.0.0.1',9000))server.listen(3)whileTrue:conn,addr=server.accept()data=conn.recv(1024)print(data.decode('utf8'))......
  • ubuntu下安装django
    1.去页面http://www.djangoproject.com/download/下载,按照步骤安装 2.安装apachemodpythonsudoapt-getinstalllibapache2-mod-python 这是在/etc/apache2/mods-enabled文件夹下会有python.load,自动载入mod_python模块 3.进入到apache的/var/www/运行django-admin.pysta......
  • Django的render函数输出到html页面出现乱码
    有三种方法:在页面中设置编码即可解决<metacharset="utf-8">在视图函数中设置响应对象的字符编码fromdjango.httpimportHttpResponsedefmy_view(request):response=HttpResponse('hello')response['Content-Type']='text/plain;......
  • 纯手撸 Django web框架批量删除redis的key
    纯手撸Djangoweb框架批量删除redis的key环境环境参照上一章节博客部署环境,在此基础上进行功能加强【批量删除指定前缀的key】,然后再CI里面掉这个接口地址即可清理redis缓存的key,更加高效的运维工作修改视图##mysite/myweb1/views.py#Createyourviewshere.fromdj......
  • 饮冰三年-人工智能-Django淘宝拾遗-85-常用的Python格式化工具
       Python代码格式化对于团队协作、代码质量、错误预防以及与Python社区的契合都具有重要意义。好的代码格式化不仅是一种编码规范,更是一种良好的编码习惯,有助于提高整个项目的质量和可维护性。   在团队中,可能有不同的编码规范和自定义的格式化规则。尽管有一些格式......
  • PyCharm 在PyCharm中运行Django测试的日志输出
    环境:Windows10  +PyCharm2022.3.3+ Djangoversion4.2.3via: https://docs.djangoproject.com/zh-hans/4.2/topics/logging/#configuring-logging 日志模块配置:在settings.py添加如下配置: importosLOGGING={"version":1,"disable_existi......
  • Django学习笔记:第四章django的视图
    1.视图函数用于处理客户端的请求并生成响应数据。在属兔中使用函数处理请求的方式,被称为视图函数,也叫作FBV(FunctionBaseViews).一个简单的视图函数:在views.py里面配置fromdjango.httpimportHttpResponse#导入HttpResponse类defindex(request):#接收HttpRequest......
  • Django:admin后台汉化问题
    Django:admin后台汉化问题1、设置admin站点中文显示,即汉化admin后台管理站点。方法一:修改settings文件LANGUAGE_CODE='en-us'TIME_ZONE='UTC'更改为:LANGUAGE_CODE='zh-Hans'TIME_ZONE='Asia/Shanghai'方法二:添加中间件(注意:中间件是有顺序的,不要随意更改。......