DJANGO模板渲染:使用Views使用标签VS



在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只是被视为请求对象的上下文还是其他含义?

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

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>符号。

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

最新更新