Django框架简介

发布时间 2023-05-08 19:13:41作者: 也曾滿眼愛意丶

python主流web框架

django
    大而全 自带的功能非常的多 但是有时候会略显笨重
  类似于'航空母舰'
  
flask
    小而精 自带的功能非常的少 但是第三方模块非常的多
  类似于'游骑兵'
  # flask的第三方模块加到一起甚至比django还多 并且也越来越像django
  # flask由于过多的依赖于第三方模块 有时候也会受制于第三方模块
  
tornado
    异步非阻塞框架 速度极快 甚至可以用于充当游戏服务器

# 还有一些占比较小 但是也很厉害的框架
    fastapi、sanic......
  
"""
框架的核心逻辑几乎是一致的 我们在学习的时候只需要先学会一种
之后就可以触类旁通 但是需要强调的是:千万不用同时学习!!!
"""

django框架版本

django3.X:自带异步功能
django2.X:默认不支持异步
django1.X:默认不支持异步
'''
学习基于django1.X版本即可原因:   老项目中使用频率最高、最广泛的版本!!!
  与2.X功能几乎一致,后续会讲解两者区别之处
  与3.X最主要的区别在于新增了一个异步的功能
'''

框架下载

pip3 install django==1.11.11
'''如果之前下载了其他版本不用管 自动替换!!!'''

注意事项

  1. 计算机名称不要出现中文
  2. python解释器版本不同可能会出现启动报错
  3. 项目中所有的文件名称不要出现中文
  4. 多个项目文件尽量不要嵌套,做到一项一夹

启动如果报错,根据提示找到修改widgets.py文件第152行源码,删除最后的逗号即可

基本使用

1.验证是否下载成功

cmd窗口直接输入django-admin有一长串结果展示表明成功(需提前配置解释器环境变量)

2.常见操作命令

# 1.创建django项目
    django-admin startproject 项目名(如:mysite)
# 2.启动django项目
    cd 项目名(如:mysite)
    python3 manage.py runserver IP:PORT 
    '''IP:PORT可以不写 默认在本地8000端口起服务'''
# 3.创建app应用
    python3 manage.py startapp 应用名(jason01)
命令行操作 cmd
	1.创建Django项目
    	1.1.先切换到指定目录,切换到D盘
        	d:
		1.2.创建Django项目
        	'''django-admin startproject 项目名称'''
        	django-admin startproject mysite01
	2.启动Django项目
    	2.1.先切换到项目目录下
        	cd mysite01
		2.2.执行启动目录
        	python3 manage.py runserver ip:port(不写ip和端口,默认是 127.0.0.1:8000)
            ctrl+c 在cmd里停止
	3.访问Django服务端
    	浏览器直接输入 127.0.0.1:8000
	4.创建app应用
        """
        Django框架类似于是一个空壳子,给你提供所需的资源
        写功能需要通过创建app来划分
        """
		4.1.创建app
        	'''python3 manage.py startapp 应用名'''
            python3 manage.py startapp app01
            
pycharm操作
"""每个Django项目使用的端口不能冲突"""
	1.创建项目
        新建项目---Django---location: django_01(创建项目目录)
                           Templates folder:templates (保持默认,存储HTML的文件夹)
                           Application name: app01   (app应用,自定义名字)
                           Enable Django admin (默认勾选,自带的后台管理功能)
	2.直接右键运行
    	'''可能会遇到版本问题,有报错'''
        例如:
            File "D:\django_01\django_01\settings.py", line 58, in <module>
    		'DIRS': [BASE_DIR / 'templates']
             		~~~~~~~~~^~~~~~~~~~~~~
			TypeError: unsupported operand type(s) for /: 'str' and 'str'
		一般都是python与Django的版本之间不匹配,按提示,把/换成,
	3.修改端口号
    	点击绿色按钮旁边的django_01,编辑配置,修改端口
		再重新启动Django即可

命令行与pycharm区别

1.命令行cmd不会自动创建templates文件夹
2.命令行不会在配置文件编写关于templates文件夹的配置
    """文件是项目名下的settings.py文件"""
    pycahrm创建的DIRS里是有内容的,cmd创建的是空的,需要自己配置
    """但是DIRS都需要重新改下,如下所示"""
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [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',
            ],
        },
    },
]

3.命令行创建的app应用,需要手动添加注册;pycharm创建的app应用会自动添加
	"""还是settings文件"""
添加'app01.apps.App01Config',  或者简写app01
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
]

4.db.sqlie3不需要管他,只要运行,就会自动创建

3.应用的概念

django框架相当于是一所大学,应用相当于是大学里面的各个学院
  大学相当于是个空壳子 负责提供环境
  学院才是一个个真正具备特定功能的集合

eg:
  使用django写一个淘宝,淘宝里面有很多功能模块
  我们应该先创建一个空的django项目然后根据功能的不同创建不同的应用
  django项目
    应用名01(user)     用户相关业务
    应用名02(order)    订单相关业务
    应用名03(goods)    产品相关业务
    应用名04(backend) 后台相关业务

主要文件

-mysite文件夹名称

  --mysite同名文件夹

    ----settings.py        项目配置文件

    ----urls.py          总路由层

  --manage.py           项目入口文件

  --db.sqlite3            运行项目后自动创建(django自带的小型数据库)

  --应用文件夹           通过命令创建(可以创建任意个数)

    ----migrations文件夹     存储数据迁移记录

    ----admin.py         django提供的后台管理

    ----apps.py          用于配置文件的应用注册(创建的应用都需要去配置文件中注册)

    ----models.py         模型层(与数据库相关)

    ----views.py          视图层(编写当前应用核心业务逻辑代码)

    ----tests.py          自带的测试文件