为什么我必须在所有响应中传递 RequestContext?

2023-11-22

我想在导航菜单中突出显示当前页面。显然,当您在菜单链接的页面上时,我需要为菜单链接提供一个类似“活动”的类。这是一个经典问题,我见过很多解决方案proposed。我的问题是我讨厌他们所有人,并且认为他们都不是很干。例如:

@register.simple_tag
def active(request, pattern):
    import re
    if re.search(pattern, request.path):
        return 'active'
    return ''

----

{% load tags %}
<div id="navigation">
    <a class="{% active request "^/about/" %}" href="/about/">About</a>
    <a class="{% active request "^/contact/" %}" href="/contact/">Contact</a>
    <a class="{% active request "^/services/" %}" href="/services/">Services</a>
</div>

该标记接受您当前的请求和 URL 表达式,如果您当前位于此页面,则返回“活动”。或者,这可以使用命名视图而不是 url 来完成,但原理是相同的。

我的主要问题是,我的导航将在 99% 的视图上调用,但是,为了获取当前的请求变量,我仍然需要将 RequestContext 解析为模板,如下所示:

def contact(request):
    # snip ...
    return render_to_response(
                'contact.html',
                { 'myvar' : myvar },
                context_instance=RequestContext(request))

为什么我需要将此 context_instance 行添加到我的每一个视图中,而可能除了其中一个视图之外的所有视图中needsrequest 变量以便获取当前 url/视图以突出显示活动链接?这看起来非常潮湿,尤其是对于大多数 django 站点中必须存在的功能而言。我希望默认情况下包含该请求,并且能够选择抑制它。我找不到在中间件中执行此操作的方法,因为我无法在视图返回模板后渲染模板之前拦截模板。

有什么建议么?


你的意图是有道理的,你需要RequestContext大多数情况下,出于性能原因,只有极少数情况下可以安全地省略它。解决方案很简单,而不是render_to_response use direct_to_template捷径:

from django.views.generic.simple import direct_to_template

def contact(request):
    # snip ...
    return direct_to_template(request, 'contact.html', { 'myvar' : myvar })

... or render_to装饰器来自django-烦人的:

from annoying.decorators import render_to

@render_to('template.html')
def foo(request):          
    bar = Bar.object.all()  
    return {'bar': bar}     
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我必须在所有响应中传递 RequestContext? 的相关文章

  • Django 将所有未捕获的 url 路由到包含的 urls.py

    我希望每个不以 api 开头的网址都使用 foo urls py urls py from django conf urls import include url from foo import urls as foo urls urlpa
  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • TEST 镜像默认数据库但没有数据

    我正在尝试对我的 Django 应用程序进行一些测试 我使用了数据库镜像作为测试数据库 当我尝试运行一些测试时 默认数据库 中的数据似乎在镜像测试数据库中不可用 default sqlite ENGINE django db backend
  • Django 中从 sqlite 迁移到 postgresql

    我想迁移自sqlite to PostgreSQL db 我安装了 postgresql 并在其 shell 上创建数据库 然后配置我的 django 设置如下 default ENGINE django db backends postg
  • Django 在 rss feed 中指定频道图像的方式

    在 rss feed 中指定频道图像的 django way 是什么 我可以通过滚动我自己的 xml 来手动完成此操作 但我正在寻找一种正确的方法来完成此操作 Editdobrych 的解决方案在这里不太适用 因为我具体询问的是 RSS 而
  • 如何将 max_length 添加到 allauth 用户名

    我使用 Django allauth 作为我的 Django 站点的用户帐户框架 文档显示有一个ACCOUNT USERNAME MIN LENGTH http django allauth readthedocs io en latest
  • Python Django-如何从输入文件标签读取文件?

    我不想将文件保存在我的服务器上 我只想在下一页中读取并打印该文件 现在我有这个 index html
  • 在 Bootstrap 中使单击的选项卡处于活动状态

    我正在使用 Django 并将 Bootstrap 与 Django 集成 这是我的导航栏 HTML 代码 div class navbar navbar default navbar fixed top div class contain
  • 如何在 Django 中使我的模型字段可选?

    我正在尝试遵循底部的完整示例 https docs djangoproject com en dev topics auth customizing https docs djangoproject com en dev topics au
  • 如何在 Django QuerySet 中将 DateField() + TimeField() 转换为本地时间?

    我的模型为这些字段 date models DateField 开始时间 models TimeField 结束时间 models TimeField 我想用以下方式注释查询集start datetime and end datetime
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • Django“和”Pinax 还是只是 Pinax?

    我正在开发一个个人项目 该项目已 完成 但现在我想添加一个社交应用程序 我认为 Pinax 已经为这项任务做好了准备 我想知道一些事情 我可以在我的项目中像 django 应用程序一样使用 pinax 吗 或者我需要使用 pinax 重新设
  • 如何使用Python在Django for Windows中激活虚拟环境?

    我被告知要在 Django for Windows 中激活虚拟环境 我应该尝试 environment path Scripts activate 但是当我输入该命令时 cmd 返回此错误 该系统找不到指定的路径 我通过输入以下命令创建了虚
  • 在 Python/Django 中将用户的 facebook/twitter 好友与网站用户进行比较

    我想知道是否有人可以帮助指导解决这个相当常见的问题的方法 我正在构建一个简单的网站 用户可以连接他们的 Twitter 帐户进行注册 我想创建一个界面 向他们显示哪些推特好友已经在使用该网站 因此 我可以获得用户的 Twitter 朋友列表
  • 如何在 Visual Studio 中将源附加到引用的程序集

    我对 Visual Studio 相当陌生 之前是在 Eclipse 上进行 Java 开发 我非常怀念 Eclipse 的其他功能之一是查看二进制程序集源的能力 在 Eclipse 中 我可以附加对引用 jar 的源代码的引用 之后导航到
  • 带有用户信息的 Django Logger

    我只是好奇 是否可以放User内的信息formatters信息输入LOGGING配置在setting py 现在我只是将该信息放入要记录的消息中 但也许有一种方法可以将其设置为formatters争论 这是我的LOGGING现在的配置 LO
  • Django 模型:默认日期时间未转换为 SQL CURRENT_TIMESTAMP

    我正在使用 Django 模型创建 PostgreSQL DB 我有一个 DateTimeField 我想将当前时间戳设置为默认值 我知道有多个消息来源建议如何做到这一点 但是 当我在 Django 之外检查数据库时 默认时间戳不会显示 我
  • Jupyter Notebook:搜索文本并转到单元格。

    选择所有单元格时 F键盘快捷键打开 查找和替换 界面 我可以在其中查看搜索表达式的所有单元格 并可能替换该表达式 但是我还没有找到进入这些牢房的方法 这是特别有问题的 因为我的浏览器在使用 折叠标题 扩展时没有检测到这些单元格 查找和替换界

随机推荐

  • 将 API 函数包装在 RxJs Observable 中

    我是 RxJs 的新手 我有一个用于地理编码的 API 它提供了如下所示的功能 simpleGeocode options where options address addr success Function failure Functi
  • ro.sf.lcd_密度必须定义为构建属性

    在模拟器上运行应用程序时 我遇到了这些错误 我该如何解决这个问题才能使我的程序更加可靠 error 01 16 11 06 49 211 E SurfaceFlinger 37 ro sf lcd density must be defin
  • 用C处理音频wav文件

    我正在处理 wav 文件的幅度并按某个小数因子缩放它 我正在努力思考如何以节省内存的方式读取和重写文件 同时也尝试解决该语言的细微差别 我是 C 语言的新手 该文件可以是 8 位或 16 位格式 我想到这样做的方法是首先阅读标头数据到一些预
  • 为什么要缓存 jQuery 对象?

    那么为什么我们要缓存 jQuery 对象呢 在以下场景中 var foo bar foo attr style cool foo attr width 123 bar attr style cool bar attr width 123 为
  • 使用 Git 创建更改文件的存档

    我正在寻找一个简单的解决方案来存档最近更改的文件 我得到这个简单的命令google git archive o update zip HEAD git diff name only HEAD 当我在 GIT BASH 中运行它时 它一直说致
  • 如何编写 ANSI C 控制台屏幕缓冲区?

    我正在制作一个基于 ASCII 的游戏 到处都有人说要使用 MSDN 中的 Console Write 如果你使用的是 Windows 那就太棒了 但我没有 因此 我尝试用 C 语言编写一个函数或一组函数 可以在两个屏幕缓冲区之间交替 并将
  • NameValuePair 在 API 22 中已弃用

    现在 namevaluepair 在 API 22 中已被弃用 如果我想实现 namevaluepair 接口 我该怎么办 下面是我的代码 package com example passpass import org apache htt
  • Python csv:UnicodeDecodeError

    我正在用Python读取一个文件csv模块 并且还有另一个编码问题 抱歉 这里有太多问题 在 CSV 文件中 有 符号 读入该行并打印后 它们已变为 xa3 尝试将它们编码为 Unicode 会产生UnicodeDecodeError ro
  • h5py,访问SVHN中Datasets中的数据

    我想读书街景门牌号 SVHN 数据集通过使用h5py In 117 def printname name print name In 118 data digitStruct visit printname bbox name 数据中有两组
  • 检测与 Maven 的依赖冲突

    我有一个 Maven 构建的 Java 应用程序 它引入了许多库 该应用程序位于一个 git 存储库中 具有其自己的 Maven 构建 每个库位于其自己的 git 存储库中 具有其自己的 Maven 构建 此外 应用程序和一些库都依赖于 g
  • SQLSTATE[HY000] [1045] 用户“用户名”@“localhost”的访问被拒绝(使用密码:YES)

    在我的 Ubuntu VM 中 我不断收到 SQLSTATE HY000 1045 用户 用户名 localhost 的访问被拒绝 使用密码 YES update 我在 env 文件中像这样配置了我的数据库 DB HOST 45 55 88
  • 没有类定义的反序列化对象实例

    任何人都知道从二进制 java 序列化对象创建 java 对象实例的工具 脚本 程序 任何东西吗 我没有 class 文件 所以我不能 据我所知 简单地创建一个 ObjectInputStream 并从那里加载它 该对象具有默认的序列化机制
  • DataGridView SelectionChanged 事件多次触发

    在我的应用程序中 我使用 DataGridView 来显示列表 当用户在数据网格视图中选择一条记录时 它应该在另一个面板中显示详细信息 对于选择 我被要求使用 DataGridView1 SelectionChanged 事件 DataGr
  • Android:如何从收到的短信中获取电话号码?

    我有一个广播接收器 SMSApp 它的 onReceive 会从意图中读取bundleExtras 在这里 我如何从bundleExtras中读取电话号码 if intent getAction equals SMS RECEIVED Bu
  • 本地报表处理期间发生错误。报表的定义“无效”

    我是使用 SSRS 的新手 我正在使用一个 rdlc文件用于使用 VS 2012 生成 PDF 报告 当我尝试设置如下参数时 ReportParameter param new ReportParameter kvp Key kvp Val
  • Gnuplot PDF 终端在 Mac 上出现字体问题

    出乎意料的是 我的 Gnuplot 开始出现问题pdfcairo终端 生成的 PDF 文件中的字体被卡住 就好像各个字符的宽度被设置为零一样 我在 Mac OS 上使用 Gnuplot 5 2 7 通过自制程序安装 这里是一个最小的不起作用
  • java.lang.ClassNotFoundException:在更新 sdk 后未在路径上找到类: DexPathList

    大家好 我的应用程序一直工作正常 直到昨天 我昨天更新了我的 SDK 它首先开始出现错误 然后出现错误 在值 v24 处找不到资源 像这样的事情我通过更改 build gradle 中的以下行来搜索并解决它 compileSdkVersio
  • iPhone:如何使用平移手势移动状态栏

    就像 Instagram 探索 选项卡一样 当我滚动内容时 状态栏也会移动 总是打电话全屏滚动 like here 当用户滚动tableView时 NavigationBar TabBar同时滚动显示或隐藏 我的问题是 不仅是Navigat
  • SRV 记录的 Java DNS 查找

    在下面的 java 代码中 我进行 DNS SRV 记录查找 以解析给定域名 例如 root 1000000000 blubluzone com 的目标域名和关联端口 用 表示的查找函数HERE 下面以某种方式返回 null 我无法获得查询
  • 为什么我必须在所有响应中传递 RequestContext?

    我想在导航菜单中突出显示当前页面 显然 当您在菜单链接的页面上时 我需要为菜单链接提供一个类似 活动 的类 这是一个经典问题 我见过很多解决方案proposed 我的问题是我讨厌他们所有人 并且认为他们都不是很干 例如 register s