Django框架工作流

Python常用的web框架包含:Django、Flask、Tornado等,然,Django框架的功能强大,尤其各种库,开箱即用。

python与Django对应版本

在这里插入图片描述What Python version should I use with Django?¶

Python 3 is recommended. Django 1.11 is the last version to support Python 2.7. Support for Python 2.7 and Django 1.11 ends in 2020.

Since newer versions of Python are often faster, have more features, and are better supported, the latest version of Python 3 is recommended.

You don’t lose anything in Django by using an older release, but you don’t take advantage of the improvements and optimizations in newer Python releases. Third-party applications for use with Django are, of course, free to set their own version requirements.

https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django

项目管理
  • 创建项目
# 命令:django-admin  startproject  项目名称   
django-admin  startproject  BMS

在这里插入图片描述

  • BMS:项目名称
  • BMS/init.py:一个空文件,用于标识一个目录为Python的标准包
  • BMS/setting.py:Django项目的配置文件,包括Django模块应用配置、数据库配置、模板配置等
  • BMS/urls.py:Django项目的URL声明
  • BMS/wsgi.py:与WSGI兼容的Web服务器为你的项目提供服务的入口点
  • manage.py:一个命令行工具,在使用Django项目时以不同的方式进行交互
应用管理

创建完项目之后,利用命令行工具 manage.py创建应用App,一个Django项目可包含多个App

# 命令:python3 startapp App名称
python3 manage.py startapp sign

在这里插入图片描述

  • sign/migrations/:用于记录models中数据的变更
  • admin.py:App后台管理,映射models中的数据到Django自带的admin后台
  • apps.py:App配置信息,用于应用程序的配置,在新的Django版本中新增文件
  • models.py:数据库映射库,Django的模型文件,创建应用程序数据表模型(对应数据库的相关操作)
  • tests.py:创建Django测试用例
  • views.py:Django的视图文件,控制向前端页面展示的内容
运行项目

创建完项目和App之后,接着利用manage.py命令行工具,指定端口号为:8001,启动当前项目

# 启动项目,端口号指定:8001
python3 manage.py runserver 8001

最后,在浏览器值中输入:http://localhost:8001,即可查看项目的运行情况
在这里插入图片描述

Hello Django

众所周知,第一个例子总是 hello world

未使用模板,指定路由
  • 配置BMS/settings.py,将sign应用添加到项目中
...
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sign',
]
...
  • 在 BMS/urls.py 添加路由配置

(1) 方法一:通过 path 路由

from django.contrib import admin
from django.urls import path
from sign import views    # 导入sign应用views文件

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index',views.index)
]

(2) 方法二:通过 url 路由

from django.contrib import admin
from django.urls import path
from sign import views    # 导入sign应用的views视图
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    #path('index',views.index),
    url(r'^index$',views.index),  # 添加 index/路径配置
    # 字符串前面加‘r’是为了防止字符串中出现类似“\t”字符时被转义
    # ^  匹配字符串开头
    # $  匹配字符串结尾
]

上述两种方法都能实现路由指向功能,选其中之一即可。

  • 在 sign/view.py 定义index函数,并通过HttpResponse类向客户端(浏览器)返回字符串“Hello Django!”
    HttpResponse类在django.http.HttpResonse中,已字符串的形式传递给客户端
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return HttpResponse('<h1 style="color:blue">hello Django without model!</h1>')

在这里插入图片描述

生成接口,返回 Json 值

快速生成后台接口,data 建议用字典封装,之后用 JsonResponse 即可返回后台接口

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse

# 以 get 请求 示例 demo
def getTaskList(request):
    data_info = {}
    data_info['code'] = 200
    id = int(request.GET.get("id"))
    page = int(request.GET.get("page"))
    ........
    data_info['total'] = sum
    data_info['items'] = [{'a':1},{"b":2}]
    .....
    return JsonResponse(data_info,safe=False)
使用模块,指定路由

现在呢,通过HTML页面来代替字符串,可以说是重构代码

  • 在应用 sign/ 目录下创建 template/index.html 文件。(Django默认找templates/目录下的html文件,请规范命名!)
#  sign/template/index.html 
<html>
  <head>
    <title>Django Page Test</title>
  <head>
  <style type='text/css'>
     #text{
        color:green;
        }
  </style>
  <body>
  <h1 id='text'>Hello Django,I'm index.html!<h1>
  </body>

</html>
  • 修改 sign/view.py 视图文件中的 index 函数
# sign/view.py
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return render(request,'index.html')

这里使用 Django 的 render 函数,request为请求对象,“index.html”作为返回客户端的html页面

  • 刷新浏览器
    在这里插入图片描述
此时,目录树结构如下

在这里插入图片描述

Django工作流

Django 处理一个请求的过程如下:

  • Django 使用的是 根 URLconf 模块。这个值通常是通过 ROOT——URLCONF 设置 (settings.py文件)
  • Django 加载 URLconf模块(urls.py文件),并寻找可用的 urlpatterns
  • Django 依次匹配每个 URL 模式,在与请求的URL匹配的第一个模式处停下来
  • 一旦其中的一个正则表达匹配上,则Django将请求对应的视图函数处理
  • 如果没有匹配到正则表达式,或者过程中抛出一个异常,则Django将调用一个适当的错误处理视图

在这里插入图片描述

MTV 开发模式
MVC 模式概念

把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念被称为软件架构的 Model-View-Controller(MVC)模式。在这个在模式中:

  • Model代表数据存取层
  • View代表的是系统中选择显示什么和怎么显示的部分
  • Controller指的是系统中根据用户输入及需要访问模型,以决定使用哪个视图的哪部分
MTV 框架

分析Django中M、T 和 V 各自的含义:

  • M 代表模型(Model):数据存取层,数据存取部分,有Django数据库层处理
  • T 代表模板(Template):表现层,选择显示哪些数据以及怎样显示的部分,由视图和模板处理
  • V 代表视图(View):业务逻辑层,根据用户输入委派视图的部分,由Django框架根据 URLconf设置,对给定URL调用适当的Python函数,可以看成是模型与模板之间的桥梁

在Django对 MVC 的诠释中,视图用来描述要展现给用户的数据;而不是数据如何展现以及展现哪些数据。而 Ruby on Rails及一些同类框架提倡控制器负责决定向用户展现哪些数据,而视图仅决定如何展现数据,而不是展现哪些数据。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值