Django最好在views.py或模板中检查user.is_authenticated吗?

hoa*_*oan 6 python django model-view-controller django-templates

我有一个主页,我想在用户未登录时显示登录表单,或者如果他/她已登录则显示属于该用户的项目列表.

到目前为止,我想出了两种方法:

  1. 检查用户是否在views.py中进行了身份验证并呈现相应的视图(在我的views.py中):

    if request.user.is_authenticated():
        return render(request, 'items.html')
    else
        return render(request, 'login.html')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 直接检查模板并为每个案例生成相应的HTML(在我的index.html中):

    {% if user.is_authenticated %}
        HTML for my items list
    {% else %}
        HTML for my login form
    {% endif %}
    
    Run Code Online (Sandbox Code Playgroud)

那么哪种方法更适合处理这个?这些方法的性能差异很大吗?我们应该在views.py或模板本身处理这些标准吗?

ozg*_*gur 3

我不认为性能差异很大。最重要的是你应该在多大程度上坚持MVC模式。

Atemplate旨在仅显示提供的某种数据view。任何类型的逻辑(例如根据请求者的状态决定显示哪种数据)应始终由视图实现。因此,您应该将逻辑移至视图函数中,以保证设计的简洁性。

  • 虽然我在某种程度上同意你的观点,但我认为你不能避免在“模板”中使用逻辑,因为“视图”对此一无所知。前任。在导航栏上添加登录用户下拉菜单。我想知道如何使用“视图”来控制它,而不使用“模板”中的逻辑。如果有这样的方法,请分享一下。附言。不是讽刺。说真的,如果有这样的方法,我想知道。 (3认同)