Django模板渲染:使用标签与使用视图

时间:2019-05-08 16:33:41

标签: django django-templates

在Django中,在通过请求提供的模板中呈现数据时,我们有2个选项:

  1. 获取视图中的数据,然后通过上下文将其传递给模板引擎:
def my_view(request):
    username = None
    if request.user.is_authenticated:
        username = request.user.username
        context = {'username': username}
        return render(request=request, template_name='test.html', context=context)

具有以下模板:

<p>Hello, {{ username }}<p>
  1. 直接从模板中的请求获取值:
def my_view(request):
    if request.user.is_authenticated:
        return render(request=request, template_name='test.html', context={})

具有以下模板:

<p>hello, {{ request.user.username }}</p>

在“正确性”方面,两者之间有区别吗?

第二个模板中的request只是被视为请求对象的上下文还是其他含义?

1 个答案:

答案 0 :(得分:1)

它们是正确的,通常来说,您最有可能遇到以下模式

def my_view(request):
    user = request.user
    context = {'user': user}
    return render(request=request, template_name='test.html', context=context)

<p>hello, {{ user.username }}</p>

通常,您不通过request,而是直接通过user。然后,由于可能有许多相关的user方法,因此在模板中使用了user.<something>表示法。

但是,根据您的用例,如果您需要从用户那里获得的唯一字段是该页面上的用户名,则直接传递它没有错。