Имя пользователя, вошедшего в систему, не отображается на странице профиля
Я делаю проект с использованием 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 %}
но после создания пользовательской модели пользователя, когда пользователи переходят на страницу своего профиля после входа в систему, имя пользователя не отображается. Как решить эту проблему? Я не знаю, по какой причине возникает эта проблема. Не мог бы кто-нибудь мне помочь?
имя пользователя не отображается на странице профиля
Вы можете добавить пользователя в контекст для вашего шаблона
profile.html
в вашем GCB-View:def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) return context | {'user': self.request.user}
Вы можете использовать запрос для получения текущего пользователя в шаблоне. Не забудьте добавить
.'django.template.context_processors.request'
вsettings
, вTEMPLATES.OPTIONS.context_processors