天道酬勤,学无止境

Django:如何在模板渲染期间在基于类的视图中捕获特定异常?(Django: How to catch a specific exception in a class based view during template rendering?)

问题

如何在基于类的视图中呈现 Django 模板期间捕获特定异常?

我有一个自定义异常ImmediateHttpResponse ,它旨在在我的基于类的视图中立即重定向。 我试过了:

def dispatch(self, *args, **kwargs):
    try:
        return super(AppConnectionsView, self).dispatch(*args, **kwargs)
    except ImmediateHttpResponse as e:
        return HttpResponseRedirect(e.response)

我试图捕获的异常是在模板标记中引发的,因此似乎该异常被 django 的模板调试拦截了,并且我收到了模板渲染错误HttpResponseRedirect no exception supplied 。 我仍然想调试我的模板,而不是在引发 HttpResponseRedirect 时。

请保留所有关于不在模板标签中引发错误的评论......我有一个非常好的理由。

回答1

如果您真的必须不惜一切代价这样做,这里有一个简单的解决方案:

def dispatch(self, *args, **kwargs):
    response = super(AppConnectionsView, self).dispatch(*args, **kwargs)
    try:
        response.render()
    except ImmediateHttpResponse as e:
        return HttpResponseRedirect(e.response)
    return response

之所以不能在视图中捕获渲染错误,是因为尽管在视图中创建了响应,但它实际上是由 BaseHandler 渲染的,它会适当地处理所有错误。 上述解决方案的缺点是它会为每个请求渲染模板两次。

能够捕获自定义错误的唯一其他方法是自定义BaseHandler (或其派生类,如WSGIHandler ),这显然会消除双重渲染问题。

假设您正在使用wsgi ,因为您可能应该这样做:) 您可以执行以下操作:

import django
from django.utils import six
from django.core.handlers.wsgi import WSGIHandler as DjangoWSGIHandler
from my_app.exceptions import ImmediateHttpResponse

class WSGIHandler(DjangoWSGIHandler):
    def handle_uncaught_exception(self, request, resolver, exc_info):
        (type, value, traceback) = exc_info
        if type is not None and issubclass(type, ImmediateHttpResponse):
            six.reraise(*exc_info)
        return super(WSGIHandler, self).handle_uncaught_exception(
            request, resolver, exc_info)

def get_wsgi_application():
    django.setup()
    return WSGIHandler()

现在你可以在wsgi.py使用这个函数:

application = get_wsgi_application()

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Django 官方推荐的姿势:类视图
    作者:HelloGitHub-追梦人物文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。于是,django 把这些相同的逻辑代码抽取了出来,写成了一系列的通用视图函数,即基于类的通用视图(Generic Class Based View)。使用类视图是 django 推荐的做法,熟悉了类视图的使用方法后,能够减少视图函数的重复代码,节省开发时间。接下来就让我们把博客应用中的视图函数改成基于类的通用视图。ListView在我们的博客应用中,有几个视图函数是从数据库中获取文章(Post)列表数据的:blog/views.py def index(request): # ... def archive(request, year, month): # ... def category(request, pk): # ... def tag(request, pk): # ...这些视图函数都是从数据库中获取文章(Post)列表
  • 使用基于Django类的视图,如果request.is_ajax,如何返回其他模板(Using Django class-based views, how can I return a different template if request.is_ajax)
    问题 我发现Django的request.is_ajax是一种非常有用的方法,可以通过JS添加渐进式增强功能,并且仍然保持DRY在我的视野中。 但是,如果要request.is_ajax,我想使用基于类的视图并使用不同的模板进行渲染。 我不清楚如何覆盖默认的“ template_name”,并使模板加载在基于类的视图中有条件地进行。 我怎样才能做到这一点? 回答1 执行此操作的适当方法是重写TemplateResponseMixin提供的方法。 如果仅需要为Ajax请求提供其他模板,则重写get_template_names 。 如果要提供完全不同的响应,请说一个application/json响应,然后重写render_to_response以为Ajax请求生成一个不同的HttpResponse 。 回答2 覆盖get_template_names: def get_template_names(self): if self.request.is_ajax(): return ['ajax_template.html'] else: return ['standard_template.html']
  • django的url配置
    在一个请求到达的时候,最先达到的就是视图层,然后根据url映射到视图函数。这一部分我们来说明url的配置。概述为了给一个应用设计URL,你需要创建一个Python 模块,通常称为URLconf(URL configuration)。 这个模块是纯粹的Python 代码,包含URL 模式(简单的正则表达式)到Python 函数(你的视图)的简单映射。映射可短可长,随便你。 它可以引用其它的映射。 而且,因为它是纯粹的Python 代码,它可以动态构造。django如何处理请求当一个用户请求Django 站点的一个页面,下面是Django 系统决定执行哪个Python 代码遵循的算法:Django 决定要使用的根URLconf 模块。 通常,这是ROOT_URLCONF设置的值,但是如果传入的HttpRequest对象具有urlconf属性(由中间件设置),则其值将被用于代替ROOT_URLCONF设置。Django 加载该Python 模块并寻找可用的urlpatterns。 它是django.conf.urls.url() 实例的一个Python 列表。Django 依次匹配每个URL 模式,在与请求的URL 匹配的第一个模式停下来。一旦正则表达式匹配,Django将导入并调用给定的视图,该视图是一个简单的Python函数(或基于类的class-based view)。
  • Django-两种视图,一页(Django - two views, one page)
    问题 假设我们有一个Django页面,其中显示了项目列表,并允许用户填写要添加到项目中的表单(我们称这些项目为帖子)。 我想要的是:此页面的URL引用了一个视图。 该视图调用另外两个视图(在此称为“子视图”),然后每个子视图呈现其部分并返回结果。 然后,主视图将子视图的结果联接起来并返回。 理想情况下,我将在页面上进行快速的javascript检查-如果启用了javascript,则表单的提交按钮将被“ Ajax'd”到处理表单添加的子视图中,并且页面将以这种方式更新。 我想我以后也可以触发刷新帖子列表的请求。 那么如何在主视图中串联两个子视图呢? 这可能吗? 更新:“子视图”是我编造的一个术语。 我想要的是一个视图,可以由Ajax直接调用该视图以返回有意义的内容,也可以从另一个视图(称为“主视图”)中调用该视图。 如果由此“主视图”调用,主视图如何处理从多个“子视图”返回的数据? 有没有简单的方法可以做到这一点? 这是考虑页面中多个视图的合适方法吗? 我应该关心责任分工吗? 回答1 django中的视图只是最终可返回Response对象的任何可调用对象。 在此视图中,您可以将工作分为适合您的组织。 也许您的观点100%委托其他方法。 在您的情况下,您的主视图将调用其他两个函数来获取数据。 如果它们也接受并使用Request对象,它们也可以是视图。
  • 只用来构建RESTful API?用Django还是Flask,哪个好?
    Python是最受好评的编程语言之一。 它因为简洁的语法,高效的编程速度,成为了大众的青睐。 对于任何初学者来说,python永远都是他们的首选。 自1991年发布以来,Python已经开发了许多框架和类库,这些框架和类库不仅加速了应用程序的开发,而且还提高了科学计算的研发,并且同时增添了许多图形用户界面。那么在众多python web开发框架中,django和flask绝对是金字塔尖上的两颗明珠。对于Restful api的设计和开发,这两个谁更适合一些呢? 框架之间的差别Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互。Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要
  • 如何处理在Spring MVC中渲染视图时引发的异常?(How to handle exceptions thrown while rendering a view in Spring MVC?)
    问题 我有一个使用FreeMarker作为View技术的Spring MVC应用程序(但也许对我的问题来说,视图技术并不重要)。 我需要拦截在请求期间可能引发的所有异常。 我已经实现了HandlerExceptionResolver,但是仅当控制器中发生异常时才执行此解析器。 但是,当控制器返回ModelAndView且呈现视图时发生异常(因为未找到变量或类似的东西),则未调用异常解析器,而是在浏览器窗口中获取了堆栈跟踪。 我还尝试在控制器中使用异常处理程序方法,该方法返回视图并使用@ExceptionHandler对其进行注释,但这也不起作用(很可能再次出现,因为异常不是在控制器中而是在视图中抛出)。 那么,是否有一些Spring机制可以注册捕获视图错误的异常处理程序? 回答1 一个简单的词:如果您只需要一个“静态”错误页面而没有太多的逻辑和模型准备,那么在您的web.xml放置一个<error-page> -Tag就足够了(请参见下面的示例)。 否则,可能会有更好的方法来执行此操作,但这对我们有用: 我们在web.xml中使用一个servlet <filter>来捕获所有异常并调用我们的自定义ErrorHandler,与在Spring HandlerExceptionResolver中使用的相同。 <filter> <filter-name>errorHandlerFilter
  • django课堂(4)表单
    编写一个简单的表单让我们更新一下在上一个教程中编写的投票详细页面的模板(“polls/detail.html”),让它包含一个HTML<form> 元素: polls/templates/polls/detail.html<h1>{{ question.question_text }}</h1>{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}<form action="{% url 'polls:vote' question.id %}" method="post">{% csrf_token %}{% for choice in question.choice_set.all %} <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" /> <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />{% endfor %}<input type="submit" value="Vote" /></form>简要说明
  • Django模板中的URL模板标记(url template tag in django template)
    问题 我试图在Django中使用url模板标记,但不走运, 我这样定义了urls.py urlpatterns = patterns('', url(r'^analyse/$', views.home, name="home"), url(r'^analyse/index.html', views.index, name="index"), url(r'^analyse/setup.html', views.setup, name="setup"), url(r'^analyse/show.html', views.show, name="show"), url(r'^analyse/generate.html', views.generate, name="generate"), 我在这样的视图中定义了网址格式 {% url 'show'%} 然后我得到了这个错误信息 渲染时捕获到异常:找不到参数“()”和关键字参数“ {}”的“ show”。 原始回溯(最近一次通话最后一次):文件“ /Library/Python/2.5/site-packages/django/template/debug.py”,第71行,在render_node结果= node.render(context)文件“ / Library / Python” /2.5/site-packages
  • Django-如何在模板“ for”循环中进行元组拆包(Django - How to do tuple unpacking in a template 'for' loop)
    问题 在我的views.py中,我正在构建一个包含两个元组的列表,其中元组中的第二个项目是另一个列表,如下所示: [ Product_Type_1, [ product_1, product_2 ], Product_Type_2, [ product_3, product_4 ]] 在普通的旧Python中,我可以像这样迭代列表: for product_type, products in list: print product_type for product in products: print product 我似乎无法在Django模板中执行相同的操作: {% for product_type, products in product_list %} print product_type {% for product in products %} print product {% endfor %} {% endfor %} 我从Django收到此错误: 渲染时捕获到异常:zip参数2必须支持迭代 当然,模板中有一些HTML标记,而不是print语句。 Django模板语言不支持元组拆包吗? 还是我走错路了? 我要做的只是显示一个简单的对象层次结构-有几种产品类型,每种产品都有几种产品(在models.py中,Product具有Product_type的外键
  • Django博客开发实战:开篇 | Django学习小组
    编程派微信号:codingpy这个公号开通已经大半年的时间了,之前推送了许多有关Python核心知识的内容,现在或许是时候发布一些 Web 开发相关的文章了,主要涉及 Flask 和 Django 这两个框架。其中,针对 Django 框架,编程派将与“Django学习小组”合作,首发 Django 博客开发实战等系列教程,本文是第一篇;针对 Flask 框架,上周收到了 Millyn 同学的投稿,会分三部分放出。以后日常推送的内容,也会逐步往这方面靠拢。文中蓝色带下划线的文字为超链接,请“阅读原文”后点击。Django开发环境搭建django 的开发环境搭建以及如何创建工程在网上有大量的博客和教程介绍,在此不再重复说明。但是我们认为最好的参考资料,还是Django官方的入门 Tutorials ,即官方文档 的 First steps 部分的六个 部分。当然如果你不喜欢英文,可以看网友的翻译版本:Django1.8.2中文文档 的入门部分。要开始 Django 开发,你需要掌握以下知识:如何创建 Django 工程,并了解 Django 默认的工程目录结构如何创建 Django APP理解 Django 的 MTV 模式,学会编写 Model、View、TemplateDjango 如何处理静态文件,即各种 CSS,JS,以及图片文件等Django应用是如何工作的?先看一张流程图
  • Django博客开发实战:开篇 | Django学习小组
    编程派微信号:codingpy这个公号开通已经大半年的时间了,之前推送了许多有关Python核心知识的内容,现在或许是时候发布一些 Web 开发相关的文章了,主要涉及 Flask 和 Django 这两个框架。其中,针对 Django 框架,编程派将与“Django学习小组”合作,首发 Django 博客开发实战等系列教程,本文是第一篇;针对 Flask 框架,上周收到了 Millyn 同学的投稿,会分三部分放出。以后日常推送的内容,也会逐步往这方面靠拢。文中蓝色带下划线的文字为超链接,请“阅读原文”后点击。Django开发环境搭建django 的开发环境搭建以及如何创建工程在网上有大量的博客和教程介绍,在此不再重复说明。但是我们认为最好的参考资料,还是Django官方的入门 Tutorials ,即官方文档 的 First steps 部分的六个 部分。当然如果你不喜欢英文,可以看网友的翻译版本:Django1.8.2中文文档 的入门部分。要开始 Django 开发,你需要掌握以下知识:如何创建 Django 工程,并了解 Django 默认的工程目录结构如何创建 Django APP理解 Django 的 MTV 模式,学会编写 Model、View、TemplateDjango 如何处理静态文件,即各种 CSS,JS,以及图片文件等Django应用是如何工作的?先看一张流程图
  • django中表单处理
    在web端与后端交互时,我们除了使用html原生的form标签,还可以使用django自带的表单。Django 提供广泛的工具和库来帮助你构建表单来接收网站访问者的输入,然后处理以及响应输入。HTML表单在HTML中,表单的作用是收集标签中的内容, 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端某些表单的元素 —— 文本输入和复选框 —— 非常简单而且内建于HTML 本身。 其他的复杂得多;弹出日期选择器或允许您移动滑块或操纵控件的界面通常将使用JavaScript和CSS以及HTML表单元素来实现这些效果。与 元素一样,一个表单必须指定两样东西:目的地:响应用户输入数据的URL方式:发送数据所使用的HTTP 方法GET和POST方法Django 的登录表单使用POST 方法,在这个方法中浏览器组合表单数据、对它们进行编码以用于传输、将它们发送到服务器然后接收它的响应。相反,GET 组合提交的数据为一个字符串,然后使用它来生成一个URL。 这个URL 将包含数据发送的地址以及数据的键和值。post和get用于不同的目的:用于改变系统状态的请求 —— 例如,给数据库带来变化的请求 —— 应该使用POST。 GET 只应该用于不会影响系统状态的请求。GET 还不适合密码表单,因为密码将出现在URL 中,以及浏览器的历史和服务器的日志中
  • django 管理过滤器和 mongodb:渲染时捕获数据库错误:数据库不支持此查询(django admin filters and mongodb: Caught DatabaseError while rendering: This query is not supported by the database)
    问题 使用 django non-rel 1.3 和 MongoDB 作为数据库后端: 我正在尝试在相应的 django ModelAdmin 类中的 MyModel 类的字段 (CharField) 上设置过滤器,如下所示: class MyModelAdmin(admin.ModelAdmin): list_filter = ('myfield',) 但我得到的是: TemplateSyntaxError at /admin/myapp/mymodel Caught DatabaseError while rendering: This query is not supported by the database. 似乎 Django MongoDB 引擎不支持过滤器,但我没有找到相关文档。 编辑:错误来自模板文件.../admin/templates/change_list.html,抛出它的行是第 85 行: {% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %} 我的模型是: class MyModel(models.Model): myfield=models.CharField(max_length='300') 我的管理模型是: class MyModelAdmin
  • Django Rest Framework 教程及API向导
    Django Rest Framework 教程及API向导。一、请求(Request)REST_FRAMEWORK 中的 Request 扩展了标准的HttpRequest,为 REST_FRAMEWORK增加了灵活的request解析和request认证。1、请求.data: 获取请求的主体,相当于request.POST和request.FILES.query_params: request.GET的重命名.parsers: APIView类或@api_view装饰将确保这个属性将自动设置为一个解析器实例列表2、内容协商.accepted_render: 接受渲染一个对象内容协商.accepted_media_type: 接受的媒体类型3、身份验证.user: 通常返回django.contrib.auth.models.user的对象。虽然行为取决于所使用的身份验证策略。如果请求用户没有被认证,request.user是一个django.contrib.auth.models.Anoymoser对象。.auth: 被认证的后才会被使用,返回任何额外身份的环境。.authenticators: APIView类或@api_view装饰将确保这个属性将自动设置为一个认证实例列表4、浏览器增强方法django rest framework提供一些附加的表单提交方法:PUT
  • JSF2 Facelets中的JSTL有意义吗?(JSTL in JSF2 Facelets… makes sense?)
    问题 我想有条件地输出一些Facelets代码。 为此,JSTL标记似乎可以正常工作: <c:if test="${lpc.verbose}"> ... </c:if> 但是,我不确定这是否是最佳做法? 还有另一种方法可以实现我的目标吗? 回答1 介绍 JSTL <c:xxx>标记都是标记处理程序,它们在视图构建时执行,而JSF <h:xxx>标记是所有UI组件,它们在视图渲染时执行。 请注意,从JSF自己的<f:xxx>和<ui:xxx>标记中,只有那些不从UIComponent扩展的标记才是标记处理程序,例如<f:validator> , <ui:include> , <ui:define>等。从UIComponent扩展的也是JSF UI组件,例如<f:param> , <ui:fragment> , <ui:repeat>等。从JSF UI组件中,仅在视图构建期间评估id和binding属性。 。 因此,以下关于JSTL生命周期的答案也适用于JSF组件的id和binding属性。 视图构建时间是解析XHTML / JSP文件并将其转换为JSF组件树的那一刻,然后将其存储为FacesContext UIViewRoot 。 视图渲染时间是指JSF组件树将要生成HTML的那一刻,从UIViewRoot#encodeAll() 。 因此:JSF
  • Python后台开发(第一章: 路由与模板)
    Python后台开发(第一章: 路由与模板) 1 Web原理介绍2 Django环境搭建和入门案例2.1 环境搭建2.2 环境搭建步骤2.2.1 创建项目2.2.1.1第一种方式2.2.1.2 第二种方法 2.2.2 项目结构2.2.3 创建app2.2.4 加载app2.2.5 运行服务器2.2.6 简单demo的实现 3 基本路由映射与命名空间3.1 基本路由映射3.1.1 概念3.1.2 主路由与子路由的映射配置实例 3.2 处理器命名3.2.1 概念3.2.2 基础格式3.2.3 命名实例3.2.4 调用实例 3.3 命名空间3.3.1 概念3.3.2 原理图3.3.3 基本格式3.3.4 实例 4 正则路由映射参数的传递和接收4.1 manage.py启动项目4.2 正则参数传递与接收4.2.1 path和re_path4.2.2 django-path函数源码4.2.3 使用实例 5 反向解析处理器5.1 导包方式5.2 有参,无参处理器的使用方法5.2.1 无参5.2.2 有参 5.3 代码实例 6 Request对象与Response对象6.1 Request和Response6.2 Request对象6.2.1 概念6.2.2 构成参数6.2.3 代码实例 6.3 Response对象6.3.1 HttpResponse6.3.1.1 概念6.3.1.2
  • Django(一)-学习笔记整理
    MVC框架 MVC简介 MVC最初是由施乐公司旗下的帕罗奥多研究中心中的一位研究人员给 smalltalk语言发明的一中软件设计模式。 MVC的产生理念: 分工。让专门的人去做专门的事。MVC的核心思想: 解耦。 MVC的思想被应用在的web开发的方面,产生了web MVC框架。 Web MVC框架模块功能 通过浏览器注册用户信息 M:Model,模型, 和数据库进行交互。 V:View,视图, 产生html页面。 C:Controller,控制器, 接收请求,进行处理,与M和V进行交互,返回应答。 Django Django是劳伦斯出版集团的开发人员为开发新闻内容网站而设计出来的一个软件,它遵循MVC思想,但是有自己的一个名词,叫做MVT。Django遵循快速开发和DRY原则。 MVT各部分功能 M:Model,模型, 和MVC中M功能相同,和数据库进行交互。 V:View,视图, 和MVC中C功能相同,接收请求,进行处理,与M和T进行交互,返回应答。 T:Template,模板, 和MVC中V功能相同,产生html页面。 虚拟环境 安装python包的命令: sudo pip3 install 包名 包的安装路径:/usr/local/lib/python3.5/dist-packages 在同一个python环境中安装同一个包的不同版本,后安装的包会把原来安装的包覆盖掉。这样
  • django学习笔记(1)
    前后端不分离,前后端分离 前后端不分离概念: 前后端不分离,那么前端的看到的效果完全由后端控制,由后端渲染页面后者进行重定向,也就是说后端需要控制前端的展示,前端、后端的耦合度很高。 前后端分离的概念: 前后端分离的应用模式中,后端只返回前端需要的数据,不在渲染html页面,也不在控制前端的效果,至于前端看到什么样的效果,取决于前端。 django中的模块 模型model:数据层,处理与数据相关的所有事物视图view: 视图层,用来处理用户发出的请求模板template:模板,通过视图函数渲染html模板,得到动态的前端页面路由url:网站的入口,关联到对应的视图函数,访问网址就对应一个函数表单forms:表单,用在浏览器输入数据提交,并对这些数据进行验证后台admin:django自带一个管理后台,对你提交的数据进行管理配置settings:django的设置,配置文件 django中的settings配置文件的说明 ALLOWED_HOSTS = ["*"] :用来限制能够访问项目的ip地址,如果设置为“*”的话,就意味着所有的ip地址都能够访问,其主要就是为了防止黑客攻击的。INSTALLED_APPS = ["django.contrib.admin",]:凡是我们自己定义的应用,都需要进行安装,如果是django2.0版本以上的,可以直接用app的名字如INSTALLED
  • 《ASP.NET MVC 5 编程实战》 - 学习笔记
    《ASP.NET MVC 5 编程实战》 ========== ========== ========== [作者] (美) Dino Esposito [译者] (中) 潘丽臣 [出版] 清华大学出版社 [版次] 2015年03月 第1版 [印次] 2015年03月 第1次 印刷 [定价] 59.80元 ========== ========== ========== 【前言】 Web Forms 的最常见应用场景是,你要开发专注于呈现数据并使用第三方控件套装的应用程序。 ASP.NET MVC 可用于处理其他所有方面,包括客户端单页面应用程序的框架搭建。 ASP.NET MVC 足以成为任何一个需要实体后台的应用程序的理想 Web 平台,对于那些以多设备实用功能为目标的 Web 应用程序来说尤其如此。 【第01章】 (P003) 在 ASP.NET MVC 中,每个请求的结果最终都会执行某个操作 —— 根本上来说也就是特定类上的方法。操作执行的结果会与一个视图模板一起传递给视图子系统。结果和模板随后会用于生成浏览器的最终响应。用户不需要将浏览器指向某个页面,他们只需要放置一个请求即可。 使用 ASP.NET MVC ,可以获得对标记的完全控制,并能随意用你最喜欢的 JavaScript 框架来套用样式和注入脚本代码。 (P004) 在软件中,术语 URI (统一资源标识符)
  • 《ASP.NET MVC 5 编程实战》 - 学习笔记
    《ASP.NET MVC 5 编程实战》 ========== ========== ==========[作者] (美) Dino Esposito[译者] (中) 潘丽臣[出版] 清华大学出版社[版次] 2015年03月 第1版[印次] 2015年03月 第1次 印刷[定价] 59.80元========== ========== ========== 【前言】 Web Forms 的最常见应用场景是,你要开发专注于呈现数据并使用第三方控件套装的应用程序。 ASP.NET MVC 可用于处理其他所有方面,包括客户端单页面应用程序的框架搭建。 ASP.NET MVC 足以成为任何一个需要实体后台的应用程序的理想 Web 平台,对于那些以多设备实用功能为目标的 Web 应用程序来说尤其如此。 【第01章】 (P003) 在 ASP.NET MVC 中,每个请求的结果最终都会执行某个操作 —— 根本上来说也就是特定类上的方法。操作执行的结果会与一个视图模板一起传递给视图子系统。结果和模板随后会用于生成浏览器的最终响应。用户不需要将浏览器指向某个页面,他们只需要放置一个请求即可。 使用 ASP.NET MVC ,可以获得对标记的完全控制,并能随意用你最喜欢的 JavaScript 框架来套用样式和注入脚本代码。 (P004) 在软件中,术语 URI (统一资源标识符)