Django框架简介

发布时间 2023-04-25 22:00:56作者: 星空看海

python中的三大主流web框架

1. Django
	# 特点:大而全(重量级的框架),里面自带了很多的功能和模块,里面也带了很多的文件
    
2. flask
	# 特点:小而精(轻量级的框架),自身并没有多少的文件,它也一样可以做django能做的事
    它严重依赖第三方模块---------->需要不停的安装模块---------->所以,它比较依赖第三方模块,也容易出现不兼容问题
    # 当你在flask中安装的模块足够多的时候,也差不多类似于Django了

3. tornado
	# 特点:异步非阻塞,并且支持高并发
    
    
'''我们目前学习Django框架,后面在学一个flask框架,框架有很多,不必把所有的框架学一遍,因为框架之间大差不差,比如,我们学完Django之后,在去学flask,就简单很多,只需要学习与Django不同的地方。tornado就可以自己去学习。'''

Django框架的版本

django1.X:默认不支持异步  1.11
django2.X:默认不支持异步  2.2 
django3.X:自带异步功能   3.2

'''
学习基于django1.X版本,附带2.x的区别
原因:
   老项目中使用频率最高、最广泛的版本!!!
  与2.X功能几乎一致,后续会讲解两者区别之处

版本之间的差异其实不大,主要是添加了额外的功能。版本首选有LTS的。
'''

Django框架的下载

下载Django

1.安装Django

方式一:命令行输入

pip install django===版本号 (不加版本号默认下载最新版本)
示例:
pip install django===1.11

方式二:用pycharm安装

验证django是否安装成功

方式一:在cmd中,输入django-admin,看一些是否有反应,如果有反应就说明安装成功了。

方式二:在pycharm控制台中(Terminal),输入django-admin

想要看我们自己装的第三方模块源码:
pycharm中左边External Libraries中 --> 点开解释器 --> site-packages文件夹下面 --> 直接查看第三方文件即可

注意事项

  1. 一个pycharm窗口只打开一个django项目(不要嵌套,不要叠加)
  2. 以后再django项目所有的文件名都不能出现中文.
  3. 计算机名称尽量也不要出现中文
  4. 不同版本的python解释器与不同版本的django可能会出现小问题

创建Django项目

方式一:命令行创建
你需要提前切换文件夹路径,切换到用来存储django框架的文件位置

django-admin startproject 项目名
示例:
django-admin startproject myfirst

方式二:pycharm创建
file --> NewProject --> Django

启动django项目

方式一:cmd启动

cd 项目名 # 先切换路径到manage.py这一层下面

解释器版本 manage.py runserver ip:port
示例:
python36 manage.py runserver # 不写默认启动在本地电脑上

方式二:pycharm启动
在上边导航栏中点击绿色按钮启动

应用

Django框架就是一款专门用来开发web应用的。
django框架相当于是一所大学(空壳),应用相当于是大学里面的各个学院
  大学相当于是个空壳子 负责提供环境
  学院才是一个个真正具备特定功能的集合

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

每一个django项目至少要有一个应用!!!

应用名都应该做到见名知意:
    user
    order
    course
    ...
为了方便学习,我们统一使用app01/02/03/04...

创建应用

方式一:cmd创建

解释器 manage.py startapp 应用名
示例:
python36 manage.py startapp app01

方式二:pycharm创建应用
新建项目的时候,一块创建应用,这种方式只能够创建一个应用,想要再创建第二个应用,必须用命令创建。

方式三:用pycharm的Terminal的命令行
Tools ---> run manage.py task

# 在这个里面命令前面的python3 manage.py省略不写
startapp 应用名

注册应用

当应用创建出来之后,第一件事先去配置文件setting.py中去注册应用,以后每创建出来一个应用,都要去这里面去注册,如果不注册,你创建出来的应用可以启动,但不生效。

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

parcharm创建出来的第一个应用自动会注册,并且直接填写全称:app01.apps.App01Config。我们可以直接写简称

更改配置文件的TEMPLATES字典

'DIRS': [os.path.join(BASE_DIR, 'templates')]

命令行创建和pycharm创建的区别

  • 命令行创建
1. 命令行创建的项目没有templates文件夹
	# 我们自己手动创建一个文件夹
2. 配置文件中:
命令行创建的,TEMPLATES字典中的'DIRS'为空,需要更改。
	TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [], # 默认没有东西
    },
]
  • pycharm创建
1. pycharm创建的项目会自动创建templates文件夹(可以修改名字,但是建议不要修改),用于存放html文件
2.
配置文件中:
pycharm创建的,TEMPLATES字典中的'DIRS'有值,但是不规范,需要更改。
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [BASE_DIR,/'templates'] # pycharm创建出来的有东西
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
    },
]

两者的配置文件中统一改成:

'DIRS': [os.path.join(BASE_DIR, 'templates')]

主要文件介绍

myfirst			# 项目名称

	app01		# 应用名称
        migrations # 它是数据库迁移记录----------->跟数据库相关的时候才会用到
        __init__.py  # app01的初始化文件
        admin.py  # 跟后台相关的
        apps.py   # 跟注册一些东西相关的
        models.py # 这个是跟数据库相关的文件(重要)
        tests.py  # 这个是测试文件
        views.py  # 视图函数----------->主要写一些功能逻辑
	app02  # 第二个应用
    
myfirst  # 跟项目名称同名的一个文件
	__init__.py
    settings.py		# django框架的配置文件
    urls.py			# 路由文件:后缀和视图函数的对应关系
    wsgi.py			# wsgiref网关文件,是一个服务器------->wsgiref本地的服务器(支持的并发量小)----------->uwsgi服务器(支持的并发量高)
    
templates文件夹  # 用于存放html文件
db.sqlite3		# django自带的数据库,方便我们测试使用
manage.py        # 这个是django框架的启动文件,入口文件

编写代码

路由文件和视图函数

1.myfirst文件夹中的urls.py(路由文件中)

from app01 import views  # 能够导入的原因是:根目录myfirst在环境变量中
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),  # url方法的第二个参数一直写的就是函数的内存地址
]

加上admin后缀就到了Django自带的后台管理系统,但是这个系统不怎么好用。
好用的后台管理系统:X-admin

2.应用中的views.py

def index(request):
    print('index')  # 热更新(写完之后会自动启动)

写完代码后要重启,但其实Django会自动启动,这种启动方式叫热更新。相当与linux中的命令:reload。后面学习的nginx服务器,就有启动服务器(用reload或者start命令启动),关闭服务器。

django三板斧

  1. HttpResponse:返回字符类型相关的数据
  2. render:返回html页面并支持传值
  3. redirect:重定向

myfirst文件中urls.py

from django.conf.urls import url
from django.contrib import admin


from app01 import views  # 能够导入的原因是:根目录myfirst在环境变量中
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),  # url方法的第二个参数一直写的就是函数的内存地址
    url(r'^func/', views.func),
    url(r'^home/', views.home),
]   # Django2.x版本是path

app01中的views.py文件

from django.shortcuts import render, HttpResponse, redirect


# Create your views here.


def index(request):
    print('index')  # 热更新(写完之后会自动启动)
	return HttpResponse("ok!!!")  # 里面写的都是字符串


def func(request):
    print('from func')
	return render(request, 'index.html')  # 加载html文件  # 如果飘黄,就是还没有修改配置文件中TEMPLATES中的DIRS

    
def home(request):
	# 重定向
    # return redirect('http://www.baidu.com')  # 可以写外部的地址
    return redirect('/home/')  # 也可以写自己的地址,跳转到url中的函数