首页 > 其他分享 >Django框架

Django框架

时间:2023-08-01 21:59:25浏览次数:34  
标签:web 框架 创建 py django Django

框架

框架就是可以做到将前端、后端、数据库三者给融合到一起

web应用的简介

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

1、web应用是什么?
	# web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他的软件了
    
2、应用程序有C/S和B/S两种模式
	#Django就是开发B/S的应用程序,所以,我们就认为浏览器是我们的客户端,而Django框架就是我们的服务端
    
3、web应用程序的优缺点:
	# 优点
    	节省空间、不需要我们更新、只要服务器更新版本,就会影响客户端的版本,可以跨平台使用
    # 缺点
    	"""一旦web应用的服务器出现宕机,就会直接影响到客户端的访问"""
        
# 什么是web框架?
	框架:就是别人已经写好了的,将功能已经封装好的,我们只需要拿来用即可

纯手撸web框架

# web应用程序主要的就是B/S架构的,浏览器就是客户端,我们现在开发出一个服务端即可
# 现在可以认为框架就是客户端的服务端
"""通过socket写出来一个服务端"""
from socket import socket

sever = socket()  # 默认是TCP协议,三次握手四次挥手

sever.bind(("127.0.0.1", 8000))

sever.listen(3)

while True:
    sock, addr = sever.accept()

    sock.send(b'HTTP/1.1 200 OK\r\n\r\n')

    # 我们如何能做到输入什么路由就返回什么路由?
    data = sock.recv(1024)
    # 将接收到的数据进行解码
    sever_data = data.decode("utf8")
    # 对数据按照空格进行切分
    colink = sever_data.split(" ")

    # 开始判断是否为输入的数据
    if colink[1] == "/login":
        # 如果是则返回相同的路由
        sock.send(b"login")

    elif colink[1] == "/index":
        sock.send(b'index')
    else:
        sock.send(b"hello web")

    sock.close()

# 浏览器每次向后端发起请求的时候,都会多一个/favicon.ico
	这个是网页的log,要在前端页面中设置
    <link rel="shortcut icon" href="https://csdnimg.cn/public/favicon.ico" >

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

借助于wsgiref模块

from wsgiref.simple_server import make_server


# 解决了socket的重复代码问题
# WSGIServer可以解决一定大小的并发问题,而且内部也将socket的代码封装好了
# 而代码上线后我们会使用uwsgi服务器(他可以解决更高的并发量)
def run(env, response):
    """
    :param env: 客户端每次发送请求的时候,所携带的数据都在这个里面,就类似于是request
    :param response: 是后端给浏览器返回的数据
    :return: 返回给浏览器查看的数据
    """
    print(env)  # 将HTTP格式的数据都封装到了字典里面

    response("200 OK", [])

    # 取到我们想要的后缀内容
    current_path = env['PATH_INFO']

    if current_path == '/index':
        return [b"index"]
    elif current_path == '/login':
        return [b"login"]
    else:
        return [b"hello web,First meeting"]


if __name__ == '__main__':
    sever = make_server(host='127.0.0.1', port=8001, app=run)
    """
        这句话写完就会开始实时监听127.0.0.1:8000这个地址
        只要有客户端来访问这个地址,那么我服务端就能够接收到客户端的请求,就类似是我们的socket端
        app=run:只要游客户端发过来请求,就会把请求交给run这个函数处理
    """
    # 启动服务端
    sever.serve_forever()

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

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

Django框架学习

Django框架是Python中的主流框架

Python中的主流框架:
	Django:
    	# 主要是来开发web项目的,因为功能比较全而多,所以比较笨重,小型项目一般不会使用
    Flask:
    	# 是一个轻量级的框架,它主要是依赖于第三方模块,模块库非常非常多
    tornado:
    	# 异步非阻塞,比较擅长解决高并发问题
        
Django版本问题:
	1.X(老项目)、2.X(新项目)、3.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以上

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

3.创建项目
	# 1 命令行创建
    	"""你可以先切换路径,切换到你想把django项目放到的路径里"""
        django-admin startproject 项目名
        django-admin startproject myfirst_dj
    # 2 pycharm创建
    	File
        		New Project
            			django
                				...
4.启动项目
	1.命令行启动:
    		# 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/
                
5.Next, start your first app by running python manage.py startapp [app_label].
	"""创建应用"""
    1.命令行创建:
    	python manage.py startapp [app_label].
        python manage.py startapp 应用名称.
    2.pycharm创建
    	.......

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

***********************************************************************************
将应用名称添加到配置文件INSTALLED_APPS中
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 在创建Django文件的时候创建APP会自动注册应用
    'app01.apps.App01Config',  # 全称
    # 使用命令行创建的Django项目需要自己创建APP自己注册
    'APP名称',
]

命令行与pycharm创建的区别

# 1 命令行创建不会自动有templatew文件夹 需要你自己手动创建而pycharm会自动帮你创建并且还会自动在配置文件中配置对应的路径
# pycharm创建
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
]
# 命令行创建
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
]
"""
也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去配置文件中配置路径
'DIRS': [os.path.join(BASE_DIR, 'templates')]
"""

Django文件介绍

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

Django应用

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

应用就相当于大学里面的二级学院(具备独立的功能模块)
# 一个应用就是一个独立的模块

比如:
	user、order、address、cart......等等
    
"应用名一定要见名知意"

Django的三板斧

"""
	HttpResponse:
		返回的字符串类型的数据
		
	render:
		返回的是html文件
	
	redirect:
		重定向
		return redirect('https//www.baidu.com/')
		return redirect('/home/')
"""

标签:web,框架,创建,py,django,Django
From: https://www.cnblogs.com/chao0308/p/17599184.html

相关文章

  • Django中对数据的改、删、查
    如何动态的展示我们的数据1、先获取到数据库中的信息内容 defuser_info(request): userinfo_all=models.user_info.objects.all()#获取所有的用户对象#<QuerySet[<user_info:user_infoobject>,<user_info:user_infoobject>,<user_info:user_infoob......
  • Linux内核的SPI 框架
    Linux内核的SPI框架是一个用于管理SPI(SerialPeripheralInterface,串行外设接口)设备的子系统。该框架主要负责管理SPI总线和SPI设备之间的通信,包括SPI核心驱动、SPI驱动程序模型、SPI总线控制器以及SPI设备驱动等。在Linux内核中,SPI框架提供了一系列API接口,使得SPI设备驱动程序能够......
  • django动态创建表和动态选择实体
    开发有时需要动态创建表,创建完成后需要动态选择model对应的表,该需求如何实现1、model层  TestBlock为了动态创建表、getBlockModel为了动态选择表fromdjango.dbimportmodels#Createyourmodelshere.classTestBlock(models.Model):BLOCK_ID=models.CharFiel......
  • Python基础day56 Django视图层相关
    视图层三板斧问题在视图函数中写函数跟普通函数不太一样,Django中使用的是局部的request所有的视图函数不能够没有返回值,并且返回值还必须是HttpResponse对象#错误代码Theviewapp01.views.indexdidn'treturnanHttpResponseobject.ItreturnedNoneinstead.其实我......
  • 几种常用到的 Hybrid App 技术框架
    移动操作系统在经历了诸神混战之后,BlackBerryOS、SymbianOS、WindowsPhone等早期的移动操作系统逐渐因失去竞争力而退出。目前,市场上主要只剩下安卓和iOS两大阵营,使得iOS和安卓工程师成为抢手资源。然而,由于两者系统的差异,开发同一个应用需投入两倍的工作量,不仅增加了人力......
  • Spring集成Quartz定时任务框架介绍和Cron表达式详解
    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下......
  • Python-Django-Django视图和URL
    Python-Django学习目录:环境搭建和基础知识:包括安装Python和Django、了解Python基础语法、掌握Django框架的基本概念和工作原理等。模型和数据库:包括创建模型、定义字段、使用DjangoORM进行数据库操作等。视图和URL:包括定义视图函数、URL路由配置、模板渲染等。表单和验证:包括表单......
  • ANDROID缓存机制&一个缓存框架推荐
    1、先推荐一个轻量级缓存框架——ACache(ASimpleCache)ACache介绍:ACache类似于SharedPreferences,但是比SharedPreferences功能更加强大,SharedPreferences只能保存一些基本数据类型、Serializable、Bundle等数据,而Acache可以缓存如下数据:普通的字符串、JsonObject、JsonArray、Bitmap......
  • 结合前端实现ORM对数据的增删改查、动静态网页,Django创建表关系、请求生命周期流程图
    通过结合前端页面实现ORM对数据的增删改查写一个页面,把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮。1.先创建一张UserInfo表格:在Django中没有提供tinyint、smallint,就只提供了int和bigint,如果想要写其他类型,需要自己定义......
  • Java集合框架
    Java集合框架集合框架用于存储数据的容器,集合框架是为表示和操作集合而规定的一种统一的标准的体系结构任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法接口表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态......