在django中,当通过请求可用的模板中渲染数据时,我们有2个选项:
- 在视图中获取数据,并通过上下文将其传递到模板引擎:
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>
- 直接从模板中的请求中获取值:
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>
符号。
不过,根据您的用例,如果用户需要的唯一字段是该页面上的用户名,则直接传递它没有错。