始终将用户包括在django模板上下文中 [英] Always including the user in the django template context

查看:97
本文介绍了始终将用户包括在django模板上下文中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个小型公司的小型内部网站上工作,用户应该能够发布。我想象了一个非常简单的认证机制,人们只需输入他们的电子邮件地址,并发送一个唯一的登录url,设置一个cookie,将总是标识他们以后的请求。



在我的模板设置,我有base.html,其他页面扩展这。我想在base.html中显示登录或注册按钮,但是如何确保必要的变量始终是上下文的一部分?看来每个视图只是设置上下文,因为他们喜欢,没有全局上下文。有没有办法做到这一点,而不包括每个上下文创建中的用户?



还是我必须自己的自定义快捷方式来正确设置上下文? >

解决方案

在更一般的意义上,不必在每个视图中显式设置变量,它听起来像是想看看自己的< a href =http://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors =nofollow noreferrer>上下文处理器。 / p>

从文档:


上下文处理器有一个非常简单的界面:只是一个接受一个参数的HttpRequest对象的Python函数,并返回一个添加到模板上下文的字典。每个上下文处理器必须返回一个字典。



I am working on a small intranet site for a small company, where user should be able to post. I have imagined a very simple authentication mechanism where people just enter their email address, and gets sent a unique login url, that sets a cookie that will always identify them for future requests.

In my template setup, I have base.html, and the other pages extend this. I want to show logged in or register button in the base.html, but how can I ensure that the necessary variables are always a part of the context? It seems that each view just sets up the context as they like, and there is no global context population. Is there a way of doing this without including the user in each context creation?

Or will I have to make my own custom shortcuts to setup the context properly?

解决方案

In a more general sense of not having to explicitly set variables in each view, it sounds like you want to look at writing your own context processor.

From the docs:

A context processor has a very simple interface: It's just a Python function that takes one argument, an HttpRequest object, and returns a dictionary that gets added to the template context. Each context processor must return a dictionary.

这篇关于始终将用户包括在django模板上下文中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆