python自动化运维学习第十五天--Django流程和urls基础

MVC模式和MTV模式

Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:

  • Model(模型):负责业务对象与数据库的对象(ORM)
    ORM提供了sql的api,使用这个api就可以对数据库进行增删改查等操作。
  • Template(模版):负责如何把页面展示给用户,通过渲染展示页面
  • View(视图):负责业务逻辑,并在适当的时候调用Model和Template
    此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
    django处理请求流程上图就是django处理用户请求的流程

首先通过用户输入的url匹配,经过urls路由解析到views试图,这时会有两种情况:

  1. 用户请求的动态数据需要对数据库进行操作,通过models对数据库进行相应操作并返回结果,返回的单条数据格式为QuerySet,多条数据格式为QuerySetList,QuerySetList列表中的元素都是QuerySet。对应图中的1.1和1.2。然后又有两种情况,第一种直接把返回的数据不经过处理直接以json格式返回给用户,一般用于开发人员调试,对应图上步骤3;第二种数据经过template指定模板渲染后返回给用户html,对应图上步骤2.1和2.2。
  2. 如果用户请求的是静态页面,则不经过models,直接通过template渲染后返回用户htm页面,对应图上步骤2.1和2.2。
urls基础

在pycharm中创建一个django的项目,命名为test_django,application name命名为demo。
创建项目后会在test项目下生成demo、template、test_django三个目录和一个manage.py文件。其中demo和test_django目录下会生成一些py文件,manage.py为启动文件。
在这里插入图片描述
默认django收到请求后,首先要到test_django目录下的urls.py文件中去匹配请求的路径。
默认urls.py文件内容如下:

from django.conf.urls import url
from django.contrib import admin
from demo import views     #导入demo包下的views模块,后来添加的

urlpatterns = [
    url(r'^admin/', admin.site.urls),      #其中括号内第一个参数为匹配的内容,第二个参数为匹配后执行的方法
    url(r'^login/$', views.login),         #login的请求转发给views模块内的login函数处理,后来添加的
]

demo包下的views.py文件内容

from django.shortcuts import render,HttpResponse,redirect

def login(request):    #接收login页面的访问请求
  
    return HttpResponse('Hello! This is a Demo.')     #直接返回给用户

这时启动test_django项目,在浏览器中输入http://127.0.0.1:8000/login/ 回车,页面就会显示想要的内容。

修改下views.py文件

from django.shortcuts import render,HttpResponse,redirect

def login(request):    #接收login页面的访问请求
    if request.method == 'GET':    #接收的请求是get方法时
        data = 'Hello demo!'
        msg = 'This is a Django project!'
    return render(request, 'login.html', locals())        #locals方法是把data和msg传给template目录下的login.html文件,经过它的处理后返回给用户。locals必须要函数中的变量名和login.html中接收值的参数名相同,即login.html中接收data变量值的参数名也应该是data
    #return render(request, 'login.html', {‘data’:data, 'msg':msg})     #另一种方法,其中字典中key的data对应login.html文件中的data,value的data对应函数中的变量data

template目录下的login.html文件内容如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <h3>{{ data }}</h3>    #接收views.py中login方法下的data变量的值
    <h3>{{ msg }}</h3>     #接收views.py中login方法下的msg变量的值

</body>
</html>

启动test_django项目,访问http://127.0.0.1:8000/login/ 就会显示经过html渲染后的内容了。

猜你喜欢

转载自blog.csdn.net/wang035759984/article/details/85039989