如何将变量从视图传递到 Django 中的 base.html?
How to pass a variable from views to base.html in Django?
我想在项目的导航栏上显示用户的名字。此导航栏位于 base.html
文件中。
在我的 views.py
中,我创建了一个执行此操作的变量
def base(request):
user = request.user
u = User.objects.get(username=user)
us = u.clients.first_name
context = {'u': u, 'us': us}
return render(request, "backend/base.html", context)
我可以让它在任何其他 .html 文件上工作,但不能在 base.html 上工作,看起来像这样
<span class="mb-0 text-sm font-weight-bold">{{us}}</span>
这是我的模型
class Clients(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=30, verbose_name="Primeiro Nome")
last_name = models.CharField(max_length=30, verbose_name="Apelido")
address = models.CharField(max_length=200, verbose_name="Morada")
nif = models.CharField(max_length=9, verbose_name="NIF", validators=[RegexValidator(r'^\d{1,10}$')], primary_key=True)
mobile = models.CharField(max_length=9, verbose_name="Telemóvel", validators=[RegexValidator(r'^\d{1,10}$')])
email = models.CharField(max_length=200, null=True, verbose_name="Email")
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
class Meta:
verbose_name_plural = "Clientes"
我正在回答我自己的问题。
我可以通过使用以下代码创建 context_processor.py
来解决这个问题
from .models import Clients, Hotels, Trip, Flight
from django.contrib.auth.models import User
def add_variable_to_context(request):
user = request.user
u = User.objects.get(username=user)
us = u.clients.first_name
uv = u.clients.avatar
return {
'u': u,
'us': us,
'uv': uv
}
In views.py try to use render_to_string function. And dont forget to configure the static files settings in configuration file.
from django.template.loader import render_to_string
context = {'u': u, 'us': us}
render_to_string('html_name.html', context)
我想在项目的导航栏上显示用户的名字。此导航栏位于 base.html
文件中。
在我的 views.py
中,我创建了一个执行此操作的变量
def base(request):
user = request.user
u = User.objects.get(username=user)
us = u.clients.first_name
context = {'u': u, 'us': us}
return render(request, "backend/base.html", context)
我可以让它在任何其他 .html 文件上工作,但不能在 base.html 上工作,看起来像这样
<span class="mb-0 text-sm font-weight-bold">{{us}}</span>
这是我的模型
class Clients(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=30, verbose_name="Primeiro Nome")
last_name = models.CharField(max_length=30, verbose_name="Apelido")
address = models.CharField(max_length=200, verbose_name="Morada")
nif = models.CharField(max_length=9, verbose_name="NIF", validators=[RegexValidator(r'^\d{1,10}$')], primary_key=True)
mobile = models.CharField(max_length=9, verbose_name="Telemóvel", validators=[RegexValidator(r'^\d{1,10}$')])
email = models.CharField(max_length=200, null=True, verbose_name="Email")
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
class Meta:
verbose_name_plural = "Clientes"
我正在回答我自己的问题。
我可以通过使用以下代码创建 context_processor.py
来解决这个问题
from .models import Clients, Hotels, Trip, Flight
from django.contrib.auth.models import User
def add_variable_to_context(request):
user = request.user
u = User.objects.get(username=user)
us = u.clients.first_name
uv = u.clients.avatar
return {
'u': u,
'us': us,
'uv': uv
}
In views.py try to use render_to_string function. And dont forget to configure the static files settings in configuration file.
from django.template.loader import render_to_string
context = {'u': u, 'us': us}
render_to_string('html_name.html', context)