Django框架(四):视图、模板

1. 视图

后台管理页面做好了,接下来就要做公共访问的页面了。当我们刚刚在浏览器中输入http://127.0.0.1:8000/admin/之后,浏览器显示出了后台管理的登录页面,那么服务器是如何找到这个页面并返回的呢。/admin/是我们想要请求的页面,服务器在收到这个请求之后,就一定对应着一个处理动作,这个处理动作就是帮我们产生页面内容并返回回来,这个过程是由视图来做的。

对于django的设计框架MVT,用户在URL中请求的是视图,视图接收请求后进行处理,并将处理的结果返回给请求者。

1.1 定义视图

视图就是一个Python函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你的Python目录下面。为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为views.py的文件中。

视图的必须有一个参数,一般叫request,视图必须返回HttpResponse对象,HttpResponse中的参数内容会显示在浏览器的页面上。

打开booktest/views.py文件,定义视图index:

from django.http import HttpResponse

def index(request):
    return HttpResponse("index")

1.2 配置URLconf

请求者在浏览器地址栏中输入url,请求到网站后,获取url信息,然后与编写好的URLconf逐条匹配,如果匹配成功则调用对应的视图函数,如果所有的URLconf都没有匹配成功,则返回404错误。

一条URLconf包括url规则、视图两部分:

  • url规则使用正则表达式定义。
  • 视图就是在views.py中定义的视图函数。

需要两步完成URLconf配置:

  • 1.在应用中定义URLconf
  • 2.包含到项目的URLconf中

在booktest/应用下创建urls.py文件:

from django.conf.urls import url
from booktest import views
urlpatterns = [
    url(r‘^$‘, views.index),
]

djangotest/urls.py文件修改代码如下:

from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url

urlpatterns = [
    path(‘admin/‘, admin.site.urls),
    url(r‘^‘, include(‘booktest.urls‘)),
]

1.3 请求访问

视图和URLconf都定义好了,接下来先启动服务器。

python manage.py runserver

然后在浏览器地址栏中输入网址:

http://127.0.0.1:8000/

网页显示效果如下图,视图被成功执行了。

2. 模板

在Django中,将前端的内容定义在模板中,然后再把模板交给视图调用,各种漂亮、炫酷的效果就出现了。

为什么要使用模板呢?

  • 对页面设计进行的任何改变都必须对Python代码进行相应的修改。 站点设计的修改往往比底层Python代码的修改要频繁得多,因此如果可以在不进行Python代码修改的情况下变更设计,那将会方便得多。
  • Python代码编写和HTML设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成。 设计者和HTML/CSS的编码人员不应该被要求去编辑Python的代码来完成他们的工作。
  • 程序员编写Python代码和设计人员制作模板两项工作同时进行的效率是最高的,远胜于让一个人等待另一个人完成对某个既包含 Python又包含 HTML 的文件的编辑工作。

基于这些原因,将页面的设计和Python的代码分离开会更干净简洁更容易维护。

2.1 创建模板

为应用booktest下的视图index创建模板index.html。

设置查找模板的路径:打开djangotest/settings.py文件,设置TEMPLATES的DIRS值。

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

2.2 定义模板

templtes/booktest/index.html文件:

<html>
    <head>
        <title>图书列表</title>
    </head>
    <body>
        <h1>{{title}}</h1>
        {%for i in list%}
        {{i}}<br>
        {%endfor%}
    </body>
</html>

在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的。

{{变量名}}

在模板中编写代码段语法如下:

{%代码段%}

2.3 视图调用模板

打开booktest/views.py文件,调用上面定义的模板文件:

from django.shortcuts import render

def index(request):
    context = {‘title‘: ‘图书列表‘, ‘list‘: range(10)}
    return render(request, ‘booktest/index.html‘, context)

打开浏览器刷新页面。

原文地址:https://www.cnblogs.com/liuhui0308/p/12199920.html

时间: 2024-11-07 11:10:23

Django框架(四):视图、模板的相关文章

Django框架之视图

Django框架之视图层 什么是视图函数 视图函数,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数.并且这里的视图函数并不仅仅指代函数,也包括类. 请求对象 Django将http协议请求报文中的请求行.首部信息.内容主体封装到了HttpRequest对象中.将HttpRequest对象当做参数传给视图函数中去,在视图函数中,通过访问该对象的属性便可以提取http协议的请求数据 常用属性 method 获取请求方式 GET 获取GET请

Django框架简介及模板Template

Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),具有耦合性低.重用性高.生命周期成本低等优点. 想要更详细的了解MVC模式? >> 点我 Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性. Django框架的不同之处在于它拆分的三部分为:Model(模型).Templ

Django框架学习----视图与模板(最新文章实现)

剩下的就是我们的最后一个功能了,最新文章的跳转 我们先在view.py里面定义一个接受最新五篇文章的变量 top5_article_list,并映射到index页面里面 最后只需要在index.html文件里面吧之前的所有文章的变量换成我们刚刚定义的top5_article_list就可以了 就此django入门结束了 原文地址:https://www.cnblogs.com/humiao-0626/p/12662994.html

Django框架学习----视图与模板(详情页的上下篇文章跳转跳转)

我们实现首页到详情页的跳转之后,接下来就是实现详情的上下篇文章的跳转 第一步:挑选按钮 把选中的按钮复制到我们的detail页面里面,并用一个div包含起来,如下图: 在上图中我定义了两个变量,他现在是不存在的,我们需要在views,py里面把这两个变量赋值之后并且映射过来.如下图: 写好之后重启一下你的项目,你的详情页就拥有了上下篇文章跳转功能了 原文地址:https://www.cnblogs.com/humiao-0626/p/12662555.html

Django框架详细介绍---模板系统

Django模板系统 官方文档: https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#std:templatetag-for 1.常见语法 两种页数符号 {{}} {% %} 1)变量 变量名由字母.数字.下划线组成:模板语言中用点"."来获取相应的属性 {{变量名}} 模板支持的写法: {# 取列表中的的第x个参数 #} {{ 列表.x }} {# 取字典中key的值 #} {{ 字典.key }} {# 取对象

django框架之视图系统和路由系统

内容回顾: 1. tags         1. for循环            {% for name in name_list %}                {{ name }}            {% endfor %}                        {% for name in name_list %}                {{ name }}            {% empty %}                空空如也          

Django框架之---视图

视图 视图的功能 视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者. 使用视图的过程 视图就是一个python函数,被定义在"应用/views.py"文件中. 使用视图时需要进行两方面操作,两个操作不分先后. 1)在"应用/views.py"中定义视图. 在booktest/views.py中定义视图函数index: def index(request): return HttpResponse("

django url分发,视图,模板回顾

Django基础轮廓 MTV+controller 一 url分发系统: 1 简单使用 url(r'^articles/2003/$', views.special_case_2003), # special_case_2003(request) url(r'^articles/(\d{4})/$', views.year_archive), # year_archive(request,1999) url(r'^articles/(\d{4})/(\d+)$', views.month_arc

Django基础四之模板系统

一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法): {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身. 变量的命名包括任何字母数字以及下划线 ("_")的组合. 变量名称中不能有空格或标点符号. 深度查询据点符(.)在模板语言中有特殊的含义.当模版系统遇到点("."),它将以这样