Django简介以及安装

前言

Web框架本质

所谓的web框架就是一个C/S架构。前端

咱们能够用socket来编写咱们的服务端,那么客户端是咱们的浏览器,当咱们访问服务器资源的时候,服务器接收到请求,可是没法响应给客户端。python

这是由于要发送的数据没有遵循http协议,在服务端添加http协议头以后能够进行访问web

那么咱们若是在网址后面加参数,好比127.0.0.1:8080/index 相似这种的,服务器也没法响应了,这时候咱们能够利用wsgiref这个模块来接收客户端的参数获取用户的url参数信息,根据这个参数信息,咱们能够定义一个urls.py路由文件,帮咱们任务的分发,分发到views.py视图函数中,shell

视图函数中利用三板斧能够发送给前端信息,最终展现给客户端。django

咱们能够这样理解:全部的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。 这样咱们就能够本身实现Web框架了。flask

服务器和应用程序

对于真实开发中的python web程序来讲,通常会分为两部分:服务器程序和应用程序。后端

服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各类数据进行整理。浏览器

应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的Web框架,例如:Django、Flask、web.py 等。不一样的框架有不一样的开发方式,可是不管如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。服务器

这样,服务器程序就须要为不一样的框架提供不一样的支持。这样混乱的局面不管对于服务器仍是框架,都是很差的。对服务器来讲,须要支持各类不一样框架,对框架来讲,只有支持它的服务器才能被开发出的应用使用。

这时候,标准化就变得尤其重要。咱们能够设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就能够配合使用。一旦标准肯定,双方各自实现。这样,服务器能够支持更多支持标准的框架,框架也可使用更多支持标准的服务器。

WSGI(Web Server Gateway Interface)就是一种规范,它定义了使用Python编写的web应用程序与web服务器程序之间的接口格式,实现web应用程序与web服务器程序间的解耦。

经常使用的WSGI服务器有uwsgi、Gunicorn。而Python标准库提供的独立WSGI服务器叫wsgiref,Django开发环境用的就是这个模块来作服务器。

基于第三方模块实现Web框架

须要用到:

  • views.py:视图层,放置功能函数(视图函数)
  • urls.py:路由层,放的是路径后缀与视图函数的对应关系
  • templates:模板层,放的全是html文件

Python三大主流Web框架

django

大型的框架,自带的组件和功能很是多

相似于航空母舰

强大的功能以外不足之处:比较笨重

  • socket服务器部分用的是别人的wsgiref
  • 路由层本身实现
  • 模板语法本身实现

flask

短小精悍,自带组件很是少

基本所有依赖于第三方组件

若是将flask全部第三方模块加起来,能够盖过django

  • socket服务器部分用的第三方模块werkzeug
  • 路由层本身实现
  • 模板语法利用第三方模块Jinja2

tornado

异步非阻塞的一个框架,能够用来开发游戏服务器,效率很是很是高。

  • socket服务器本身实现
  • 路由层本身实现
  • 模板语法本身实现

Django框架介绍

安装

安装Django以前注意:

  1. 计算机名称不能有中文
  2. python解释器不要使用3.7版本 推荐使用版本3.4~3.6
  3. 一个pycharm窗口 只能跑一个项目
  4. 版本尽可能安装稳定版,本教程将以1.11.11版本为主。

安装直接用pip安装便可

pip3 install django==1.11.11

如何检验django是否安装成功
命令行敲 django-admin

建立项目

命令行建立项目:

django-admin startproject 项目名(例如mysite)

pycharm建立项目:

建立App

python3 manage.py startapp app01

django是一个以开发app为主要功能的web框架

app就是application应用的意思

一个django项目就是一所大学(空的架子 自己没有任何功能),而app就相似于大学里面的各个学院。

一个app就对应一个具体的功能模块。

建立好的app须要在django配置文件中注册方可生效

注意
1.使用命令行建立项目不会自动帮你建立templates文件夹
2.配置文件中不会自动帮你书写templates文件路径

3.setting配置文件中也不会自动帮你加app,不会生效

setting配置文件:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',       # 若是新建的app没有,这里要加上
]

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',
            ],
        },
    },
]

目录介绍

mysite/
├── manage.py  # 管理文件
└── mysite  # 项目目录
    ├── __init__.py
    ├── settings.py  # 配置
    ├── urls.py  # 路由 --> URL和函数的对应关系
    └── wsgi.py  # runserver命令就使用wsgiref模块作简单的web server

运行项目

python manage.py runserver 127.0.0.1:8000

Django基础必备三件套

from django.shortcuts import HttpResponse,render,redirect

HttpResponse

内部传入一个字符串的参数,将会返回给浏览器

例如:

def index(request):
    # 业务逻辑代码
    return HttpResponse("正常访问了")

render

能够接收多个参数

第一个参数接收request

第二个参数填写一个待渲染的模板文件(html文件)

第三个参数写一个保存具体数据的字典

意思是将数据填充进模板文件,最后将结果返回给浏览器,相似于Jinja2模板,注意,这里的reder使用的模板语法,在html文件中可使用python的字典语法取值,是python后端处理完成以后再发送到html的,最后才将结果返回给浏览器。

例如:

def index(request):
    # 业务逻辑代码
    return render(request,"index,html",{"name":"qinyj","hobby":["run","jump"]})

redirect

接收一个URL参数,意思是能够重定向到指定的URL地址

例如:

def index(request):
    # 业务逻辑代码
    return redirect("https://www.baidu.com")
相关文章
相关标签/搜索