在开始之前,我想指出我已经浏览了一半的互联网以寻找可能的解决方案,但没有真正解决我的问题。也就是说,我是Django和Python的初学者,所以这可能是一个简单的问题,也许我太愚蠢了,无法弄明白。
所以,这就是事情。我正在为大学做一个项目,我必须建立一个主要强调后端的网站。我选择Django作为框架,到目前为止我已经能够让新用户注册并登录和注销。问题可能不是戏剧性的,但至少对我来说很烦人。更清楚一点,用户登录后,我想在注销按钮旁边的顶部栏中显示他的名字。
因此,登录面板就是这样:
这部分没问题,我只是点击了登录,它就可以了。
然后我到了这里:
正如您所看到的,首先,用户名将显示在注销旁边的顶部栏中。但如果我点击“Whatever”或用户名本身,它就会消失。这可能与以下事实有关:最初,当用户名仍然可见时,我在url“login_user”中,在urls.py中使用视图“login_user”。一旦我点击上面提到的任何一个,我希望它切换到一个名为“user_panel.html”的模板,但我想这也可能是一个问题。以下是它的外观:
视图“login_user”如下所示:
def login_user(request):
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return render(request, 'main/user_panel.html')
else:
return render(request, 'main/login.html', {'error_message': 'Your account has been disabled'})
else:
return render(request, 'main/login.html', {'error_message': 'Invalid login'})
return render(request, 'main/login.html')
用户名在“user_panel.html”中显示为“{{user.get_username}}”。
就像我说的,这可能是一个非常基本的问题,但我根本无法理解它,真的打败了我。提前感谢您提供任何可能的帮助。
编辑:
在settings.py中:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
因此,user.get_username在user_panel.html中使用,如下所示:
<li>
<a href="{%url 'main:user_panel'%}">
<div style="font-size:1.5em; color:lightblue">
<i class="fas fa-user-circle"></i> <font size="5" face = "Ubuntu" color="white">{{ user.get_username }}</font></div>
</a>
</li>
user_panel视图:
def user_panel(request):
template = loader.get_template('main/user_panel.html')
return HttpResponse(template.render())
现在它显示了用户名,但每次点击,都会下载:
答案 0 :(得分:0)
用户名显示在“user_panel.html”中,其中包含“{{ user.get_username}}“。
您似乎忘了将user
传递给模板:
return render(request, 'main/user_panel.html', {'user':user})
答案 1 :(得分:0)
只需将user.get_username
替换为:
request.user.username
或
request.user.get_username