Я перехожу к accounts/login
, и мне предлагается страница входа. Когда я ввожу имя пользователя и пароль, он принимает меня в profile.html. Оттуда я просто вижу профиль слова, но я хочу, чтобы он также показывал {{user.username}}. У DOM только <p></p>
пусто.Функция Django Render: шаблон не печатает переменную
Я включил отладку PDB, но никаких следов или чего-либо не происходит.
LoginView.py
def login_view(request):
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
print(user)
print(user.username)
return render(request, '/', {
'username': username,
'user': user
})
# return HttpResponseRedirect('/')
else:
return 'Please enter your UN and PW'
profile.html
{% block content %}
<html>
<head>
<title>PROFILE</title>
</head>
<body>
PROFILE
</body>
<p>
{{ user.username }}
</p>
</html>
{% endblock %}
Если кто-то может дать мне советы отладки, вручную ссылки или объяснение того, почему user.username не появляется, я буду признательна. Приветствия
UPDATE ВАЖНАЯ ИНФОРМАЦИЯ:
Так что я думаю, что проблема заключается с пользовательской переменной, а не какой-то нелепая ошибка с моей стороны относительно метода. Если я использую
return render(request, '/', {
'Kitty': 5,
})
, а затем на пользователя формы I {{ Kitty }}
достаточно уверен, что он делает печать 5. Но вы, вероятно, знал, что уже.
UPDATE 2 Внутри моей settings.py
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
и
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
UPDATE 3
def login_view(request):
myUserName = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=myUserName, password=password)
if user is not None:
if user.is_active:
login(request, user)
print(user)
print(user.username)
return render(request, '/', {
'Kitty': 5,
'myUserName': myUserName,
})
# return HttpResponseRedirect('/')
else:
return 'Please enter your UN and PW'
<p>
{{ user.get_username }}
</p>
<p>
{{ Kitty }}
</p>
<p>
{{ myUserName }}
</p>
^^^ Предложение о переименовании UserName
UPDATE 5 Это, пожалуй, лучшее, что я могу справиться с отладкой
DEBUG (0.002) QUERY = 'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superu
ser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_st
aff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = %s' - PARAMS =
('heebeans',); args=('heebeans',)
Кстати, heebeans пользователь с «heebeans» ООН и PW «heebeans»
Спасибо за все ваши поддержка до сих пор!
Это может быть проблемой имен переменных. В django 'user' является объектом. Я подозреваю, что, поскольку вы пытаетесь отобразить 'user' и' username', он может пытаться получить доступ к 'username' (вашей переменной)' user' (объект django). Так как этого не существует, он пропускает молчащую ошибку. Попробуйте переименовать 'username', возможно,' user_name' и поместите эту переменную в шаблон и сообщите мне, что произойдет. –
Каково значение 'myUserName', если вы печатаете его в своем представлении? –
Мне очень жаль, что я некомпетентен, но как мне его распечатать с моего взгляда? Есть ли простой способ показать его в командной оболочке? Все еще не уверены, как правильно отлаживать материал. –