Как передать переменную из представлений в базу. html in Django? - PullRequest
3 голосов
/ 18 февраля 2020

Я хочу показать имя пользователя на навигационной панели моего проекта. Эта навигационная панель находится в файле 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 файл, но не на базе. 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"

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Я отвечаю на свой вопрос.

Я смог решить эту проблему, создав 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
    }
0 голосов
/ 18 февраля 2020

В views.py попробуйте использовать функцию render_to_string . И не забудьте настроить параметры файлов stati c в файле конфигурации.

from django.template.loader import render_to_string

context = {'u': u, 'us': us}
render_to_string('html_name.html', context)
...