django视图views解析

本文介绍了Django视图工作流程,强调了MTV模式中的views如何与模板templates交互。详细阐述了两种存放templates目录的方法:1) 应用目录下,遵循Django的命名空间原则;2) 工程目录下,需要在settings中配置模板路径。同时,文中提供了配置视图、路由及设置文件的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django视图解析

MTV大致的工作流程是:
用户提交Http请求到WSGI,WSGI将请求变成URL,并且给到Web框架的路由模块,路由模块将URL与特定的view函数相关联,views特定的函数此时会选取特定的templates模板,经过templates的渲染后将渲染后的模板提交到浏览器。
在进行实际的工程时,模板templates需要我们手工创建目录。
这时手工创建templates目录的位置存放有两种方法:

1、存放在应用目录下

在我的例子中,myproject是项目工程,myapp是应用,此时templates的目录为:myapp/templates
在这里插入图片描述
建立好templates后,便可以在templates目录建立返回用户的Html页面,代码可为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这是一个测试</title>
</head>
<body>

<p style="font-size:20px;font-family:arial">{{test}}</p>
<p style="color:red"><br style="color:red"/>这是个测试</p>
</body>
</html>

在创建Html文件前,最好将其放在新建myapp文件内(当然其他名字也可以),此时的目录为:
在这里插入图片描述
这样做是因为Django 将会选择第一个匹配的模板文件,如果你有一个模板文件正好和另一个应用中的某个模板文件重名,Django 没有办法区分它们。我们需要帮助 Django 选择正确的模板,最好的方法就是把他们放入各自的命名空间中,也就是把这些模板放入一个和 自身应用重名的子文件夹里。

做好返回用户的页面后,去myapp下的views视图文件建立连接:

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
def index(request):
    context = {
        'test': 'hello, man!'
    }
    return render(request, 'myapp/index.html', context)

在做好视图后,再配置相应的本地路由跟全局路由就可以了,然后在浏览器上运行,可看到:
在这里插入图片描述

2、存放在工程的目录下

此时的templates目录为:
在这里插入图片描述
在myapp目录下新建文件results.html的代码为:

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

<p style="font-size:20px;font-family:arial">{{test}}</p>
<p style="color:red"><br style="color:red"/>这是一个templates建立在工程下的测试</p>
</body>
</html>

修改views,新增了一个results函数:

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
def index(request):
    context = {
        'test': 'hello, man!'
    }
    return render(request, 'myapp/index', context)

def results(request):
    context = {
        'test': 'hello, man!'
    }
    return render(request, 'myapp/results.html', context)

在配置好相关路由后,进行一个不可或缺的步骤,那就是在settings里面配置模板路径:
在这里插入图片描述
在DIRS里添加上templates,这样系统就能找到正确找到results文件了。
最后运行浏览器:
在这里插入图片描述
这两种建立templates的方式都可以采用,不过我比较喜欢用第一种方法,因为比较省事,不用修改setting文件,前提是激活了应用,这样系统就能找到正确的文件路径了。
根据官方文档说法,第一种方法不用配置setting文件是因为默认的设置文件设置了 DjangoTemplates 后端,并将 APP_DIRS 设置成了 True。这一选项将会让 DjangoTemplates 在每个 INSTALLED_APPS 文件夹中寻找 “templates” 子目录。
第二种方法新建的templates不在应用的目录下,所以需要修改setting文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值