我是Django的新手(使用1.6.2),我担心自己可能会陷入不良做法,因此我必须问:

目前,我正在处理一些简单的视图:主页,个人资料。 对于这两个视图,我都会检查用户是否使用request.user登录。 如果该用户已登录,我会将其信息传递到context {}中,然后将其发送到模板。

那么,对于要在其中包含该信息的每个视图,我基本上都需要这样做吗?

#views.py 

def home(request):
....etc....
context = { 
    'players' : players, 
    'teams' : teams, 
}

if request.user.is_authenticated():
    p = Player.objects.get(user=request.user)
    if p:
        context['p'] = p
return render(request, 'home.html', context)

因此,我基本上在发送之前先检查是否应将该信息添加到上下文中。 问题是,此信息实际上用作标题,应该在每个页面上。 有没有办法让我将其包含在每个视图中而不通过上下文?

提前谢谢了。 你们这里的StackOverflow确实为我们中的许多人提供了真正的帮助!

===============>>#1 票数:2

您可以编写一个自定义上下文处理器

def foo(request):
    """ 
    Adds Player to context
    """

    context = {'p': None}
    if request.user.is_authenticated():
        p = Player.objects.get(user=request.user)
        if p:
            context['p'] = p

    return context

并将其添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS元组中(假定foo放在了应用程序文件夹的context_processors.py模块中):

TEMPLATE_CONTEXT_PROCESSORS = (
    # ...
    "your_app_name.context_processors.foo",
)

===============>>#2 票数:0 已采纳

尽管ndpu正确地指出您可以使用上下文处理器来解决一般问题,但是在这种情况下,似乎并没有任何必要。

您已经在当前用户和相关播放器之间建立了直接关系:我认为这是一对一的关系。 只要使用了RequestContext(通过render快捷方式即可),默认对象上下文处理器就已经将user对象传递给了模板上下文。因此,根本不需要任何额外的上下文,您只需在您的模板:

{{ user.player }}

得到球员。

  ask by zekone translate from so

未解决问题?本站智能推荐:

1回复

将上下文从一个Django视图传递到另一个

我有一个Django视图,其成员身份表重定向到“谢谢”页面。 该表格与Stripe集成以进行付款。 该表格可以按预期工作; 通过Stripe充电并重定向到“谢谢”页面。 我想传递上下文变量以显示在“谢谢”页面上。 我读过Django Sessions可以做到这一点,但我不知道。 以下
1回复

在Django中将参数传递给表单时出错

我是django的新手,我尝试更新一些将id_provider从form1传递到form2的数据。form2必须显示提供程序的数据 我有一个带有一点form(form1)的html页面: 是用户输入数字的简单输入文本。 该数字将作为参数传递给其他形式。 我的forms.py:
1回复

将变量传递给表单

我正在将代理ID传递给我的表单。 问题是,我该如何获取该代理ID,获取该ID,然后使下拉字段默认选择我通过的代理ID? 传递变量 我的views.py 表格
1回复

Django为什么不允许通过上下文重定向

从该问题和可接受的答案可以清楚地看出,使用上下文重定向的唯一方法是将其保存在会话中。 Django为什么没有像render这样的带有上下文对象的简单redirect方法? 例如,假设我们有一个同时接受GET和POST请求的登录视图。 GET请求只是呈现用户可以输入凭据的表单,这将触发对
1回复

如果页面上有多个表单并且没有提交按钮Django 1.10,如何传递表单ID?

我有一个问题列表页面。 每个按钮都有单选按钮形式,分别是“是”,“也许”,“否”。 通过选择此表单来提交。 http://prntscr.com/embo1m 我不明白如何将问题ID与表单联系起来。 如何在响应中获得它? models.py views.py
2回复

如何在帖子详细信息页面Django上显示我的评论表单

因此,基本上,现在,如果用户要在我的网站上的帖子中添加评论,它将带他们到带有表单的另一个页面。 但是,我希望评论表单位于实际的“帖子详细信息”页面上,因此用户不必转到另一个页面即可发表评论。 到目前为止,我已经尝试添加一些上下文内容,并将注释表单位置的url更改为post_detail.
2回复

Django Contact Form TypeError:上下文必须是字典而不是Context

我遇到一个错误“上下文必须是字典而不是上下文”。 提交联系表后。 我预感这是由于Django 1.11的不兼容问题。 不太确定如何找到解决方法。 这是我要追溯的内容: http://dpaste.com/18T2D2V 这是我的views.py文件中联系路线的代码段:
1回复

如何在Django中使用上下文

我正在尝试创建一个确认页面。 User可以在一页上创建订单,然后create_order视图验证forms并将带有上下文的请求发送到另一个名为confirm_order view 。 我认为我会正确工作,但是有一个问题。 首次confirm_order获取包含forms数据的request
2回复

使用表单后修改上下文

我有一个视图,显示具有特定标签的对象的列表。 我想将form.cleaned_data ['tag']返回到模板,但是我已经使用过get_context_data ...我应该怎么做?
1回复

在Django中将多个模板变量传递给模板标签

当我尝试将3个变量传递给我的模板标签时,会出现我的问题,我猜它需要一个或2个输入。 因此,有关如何将3个模板变量传递到我的模板标签的任何想法,这是我的代码: views.py: message.html: url.id和task_id是模板变量 它给我一个错误:无法