Имя пользователя, вошедшего в систему, не отображается на странице профиля

Я делаю проект с использованием django, где у меня есть два приложения. Одно - приложение для пользователей, а другое - приложение для блога. Сначала я использовал встроенную модель пользователя django. Но позже мне пришлось расширить встроенную модель пользователя, чтобы добавить новую колонку.

users/forms.py

from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
from blog.models import Category

User = get_user_model()

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    categories = Category.objects.all()
    cid = forms.ModelChoiceField(queryset=categories)

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2', 'cid']

Это пользовательская модель пользователя, где я добавил новый столбец cid, который является внешним ключом в таблице категорий.

users/model.py

from django.db import models
from blog.models import Category
from django.contrib.auth.models import AbstractUser

# Create your models here.
class CustomUser(AbstractUser):
    cid = models.ForeignKey(Category, on_delete=models.CASCADE)

Однако, прежде чем реализовать пользовательскую модель пользователя, я сделал так, что после успешного входа в систему пользователи смогут увидеть страницу своего профиля с именем пользователя.

blog/profile.html

{% extends 'users/base.html' %}
{% block content %}
    <h1>{{ user.username }}</h1>
{% endblock content %}

но после создания пользовательской модели пользователя, когда пользователи переходят на страницу своего профиля после входа в систему, имя пользователя не отображается. Как решить эту проблему? Я не знаю, по какой причине возникает эта проблема. Не мог бы кто-нибудь мне помочь?

имя пользователя не отображается на странице профиля

  1. Вы можете добавить пользователя в контекст для вашего шаблона profile.html в вашем GCB-View:

    def get_context_data(self, *args, **kwargs):
       context = super().get_context_data(*args, **kwargs)
       return context | {'user': self.request.user}
    
  2. Вы можете использовать запрос для получения текущего пользователя в шаблоне. Не забудьте добавить 'django.template.context_processors.request' в settings, в TEMPLATES.OPTIONS.context_processors

    .
Вернуться на верх