问题标签 [django-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1390 浏览

python - Django 错误报告 - 如何知道哪个用户触发了错误?

有没有一种方法可以自定义 Django 错误报告,所以当它给我发电子邮件时,它会让我知道哪个用户触发了错误?

如果重要的话,我在 Django 1.2 中。

非常感谢提前!

0 投票
2 回答
223 浏览

django - Django:站点基础模板中的表单

我需要创建一个表单,而不是搜索,而是一种将出现在站点库中的配置文件切换器。

只是想知道解决这个问题的最佳方法是什么?我对中间件不是很熟悉,但这听起来像是调查它的时候了?

或者,我想我可以从模板标签加载表单?

我只是在寻找不同的方法来实现这个站点范围的表单。谢谢。

一个很好的例子是 Github。切换帐户上下文根据您当前的帐户上下文为您提供不同的页面/可访问性。

0 投票
2 回答
2450 浏览

django - 如何在 Django 中实现 Https(SSL 中间件)

我是 Django 和 Web 开发的新手。我想 在 django中实现Exactly this Question 。我已经搜索了很多博客和问题,我无法找到,确切地说是如何实现这一点。SSL Middleware Django,是它不能很好掌握的东西。如果这是解决方案,谁能告诉我如何实施?

问题清楚了吗?还是我需要添加一些东西,请评论我将进行必要的更改。任何帮助将不胜感激。提前致谢。

PS:我已经在服务器上添加了ssl证书。所以这是照顾。

0 投票
2 回答
1640 浏览

django - Django 消息框架在模板循环中不起作用

我最近升级到 Django 1.3,我想开始使用 Messages 系统。

我已将中间件、模板上下文处理器和消息添加到INSTALLED_APPS

我只是根据进行简单计算的视图进行测试。

在管理员中,会显示消息,但是当尝试在我的 base.html 文件中呈现它们时,出现以下错误。

在堆栈中它在这里失败了。

我还删除了 for 语句,但我仍然收到以下错误,仅此而已

有任何想法吗?

0 投票
1 回答
445 浏览

django - 在 django 中放置一个中间件的成本是多少

我为我的一个非常简单的应用程序编写了代码。

  1. 登录应用程序的 Facebook 画布用户
  2. 做一些访客跟踪,大部分代码都很简单。

该应用程序可能并不复杂,相当接近博客系统。但是我想知道我的中间件架构在资源方面的成本是多少。

让我特别担心的一件事是,每次发出唯一请求时都会创建一个新的访问者对象。这是一个好主意吗 ?

因此,虽然中间件是一个了不起的 DRY 和敏捷概念,但它们在性能方面的表现如何?

谢谢

0 投票
0 回答
756 浏览

django - 用自定义身份验证应用程序和身份验证中间件替换 Django 身份验证应用程序和中间件

在研究了如何在 django 中扩展 auth 应用程序的用户表后,我决定编写自己的 auth 应用程序。这些是我更换contrib.auth应用程序需要做的事情:

  1. 创建一个AuthenticationMiddleware类并MyAuth.models.User在每个请求中添加一个对象,而不是django.auth.models.User在设置文件中指向它。
  2. 创建自定义AuthenticationBackend.
  3. 创建AuthenticationContextProcessors 并在设置文件中类似地指向它们。

问题:

  1. 我是否需要在任何其他应用程序或会话中间件类中进行任何编辑?
  2. 编写自己的身份验证应用程序的基本原因是用户表中没有足够的字段,我不喜欢user_profile. 我注意到我们将用户对象添加到每个请求中,以便我可以在会话中使用它。但是如果我在用户表中添加更多字段,那么用户对象会变得更大,如果添加到每个请求中只会增加负载。我对吗?增加用户对象的大小会带来任何负载问题吗?还是影响可以忽略不计?
0 投票
2 回答
3309 浏览

django - Django 更改中间件中的 request.path(通过 url 中的令牌进行身份验证)

亲爱的 Stackoverflow 上的无所不知者,

在 Django 1.3 中,我正在制作一个 process_request 中间件,它从 url 获取令牌,将用户登录(如果正确)并从 url 中删除令牌。然而:

I) Django 建议不要在中间件中访问 POST/GET 数据,我不太确定为什么会这样……这同样适用于 request.path 吗?https://docs.djangoproject.com/en/dev/topics/http/middleware/#process-view

II)我想从 URL 中删除令牌,所以/album3/pic42/~53Cr3t70K3n/like/-> /album3/pic42/like/。但是更改 request.path 不起作用。找不到该页面,而

  • 中间件确实处理正确(通过打印验证)

  • 直接输入/album3/pic42/like/确实有效

  • 错误(带令牌)显示Request URL: http://www.site.com/album3/pic42/like/

有没有解决这个问题,或者我完全从错误的角度来解决这个问题?

提前致谢!

我刚刚意识到要改变它的客户端,显然我需要一个重定向(为什么我没有想到......)。但是,能够在没有新请求的情况下仅在服务器端重写它仍然很有用,例如访问个性化图像。


ps:如有需要,更多细节,请随意跳过

我正在开发一个(将)向用户发送个性化电子邮件的网站。我希望用户能够通过电子邮件链接中的令牌单击电子邮件中的链接并自动登录。这是对正常登录的补充。(我知道它不太安全,因为人们可能会转发电子邮件,但它对我的网站来说已经足够了)。url 看起来像这样:/album3/pic42/~53Cr3t70K3n/like/(去掉http ://www.site.com,Django 会这样做)

我正在编写一个中间件来匹配这个并在适当的时候让用户登录,一个用于接受令牌作为有效凭据的身份验证后端和一个令牌模型。


中间件 process_request 函数:def process_request(self, request):

现在它适用于重定向,我也希望能够在内部进行。

0 投票
1 回答
300 浏览

python - Pythonic/djangonic 方式以秒(或几分钟,如果需要)处理用户超时

与我的案例最接近的示例是 Django ajax 聊天应用程序。房间需要保留一个活跃用户列表。除了在聊天中显示该用户列表外,给定房间可能有最大数量的活跃​​用户;如果没有空间,需要阻止新用户进入。

目前,我有聊天客户端页面通过 ajax 每秒调用一次投票视图。投票视图返回房间的文本。我认为 poll 也可以执行某种类型的 ping - 将用户添加到 Room 对象上的 active_user M2M 字段(到目前为止,我已经完成了所有这些)。我接下来需要的是在某种超时后将用户从该 active_user 列表中删除。

我想有两种方法可以做到这一点,我想知道对于需要精确到秒(或十/十五秒)的应用程序来说,哪种方法更有效:

  • 在这个线程中使用 cookie/会话/中间件(但在我看来,这种方法不适用于即时信息
  • 另一个模型,例如一个明确的 Users_Rooms 'through' 表,其中包含一个 datetime 字段,用于在创建时更新时间以及每次 ping 之后,并编写一些函数来清理旧的

这就是我能想到的。我只是想弄清楚每个房间的每个用户每秒都点击 mySQL 是否是一个好主意,并且想知道那一秒是否确实是该任务的最佳选择。谢谢!

0 投票
1 回答
1994 浏览

django - 连接 Django 设置“MIDDLEWARE_CLASSES”

我想使用 导入 django 默认设置,from django.conf import global_settings然后添加MIDDLEWARE_CLASSES到它。我喜欢用我的设置来做这件事,这样我就知道我添加了什么以及什么是默认的。所以我的设置文件看起来像这样:

此策略适用于其他设置,例如TEMPLATE_CONTEXT_PROCESSORS,但当我尝试时,它不起作用。我print global_settings.MIDDLEWARE_CLASSES在添加调试工具栏中间件后添加,这是我使用时的输出runserver

如果你滚动你可以看到它运行了两次设置。第二次再次添加设置。我怎样才能防止这种情况?我必须MIDDLEWARE_CLASSES在设置中硬编码我的吗?还有一个很好的理由不导入默认的 django 设置吗?

0 投票
1 回答
133 浏览

django - 绕过 SESSION_SAVE_ON_EVERY_REQUEST 进行 AJAX 调用,或者更好的解决方案

我有一个需要登录所有页面的私人网站。当用户去编辑记录时,我不想锁定记录。我想为其他人保留记录。我设计了一个系统,使用 dajax/dajaxice 对 django 进行 AJAX 调用,以获取最新的人员和编辑日期时间以供记录。如果当前用户没有进行最近的编辑,则会出现一个警告框,通知用户其他人在打开记录后进行了编辑,他们应该刷新页面以获取最新版本的数据。

这一切都很好,非常适合我们的情况。我有一个会话超时,超时时会将用户发送到登录提示。如果用户离开页面并离开计算机,我们希望保护敏感数据。这也很完美。

我的问题是,当调用 AJAX 来检查数据的版本时,看看它是否改变了,它也会保存会话,所以无论他们在页面无人看管的时间有多长,会话都不会超时。

有没有办法绕过 SESSION_SAVE_ON_EVERY_REQUEST,这样只有这个请求不会触发保存。我知道我可以在每个 OTHER 视图中手动保存会话,但这似乎是错误的做法。我想我可以编写中间件来检查请求的视图,如果不是这个视图,则只保存会话,但我也不确定这是否是最好的解决方案。

有什么建议么?

提前致谢。