【发布时间】:2018-09-10 13:52:45
【问题描述】:
我目前遇到一个问题,在我的网络应用程序中,如果 2 个用户登录然后每个人都想进行操作(例如添加评论),这 2 条评论将在数据库中显示为来自同一个人(最后登录的用户)。我已经记录并知道必须进行会话,但我无法弄清楚如何。从找到的示例中,我了解到需要类似的东西
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
request.session['username'] = username
return redirect('index')
else:
return render(request, 'library/login.html')
如果我想始终向所有用户打印用户名,然后在配置文件中,将显示最后登录用户
class Profil(View):
template_name = 'library/profile.html'
def get(self, request):
print(request.session['username'])
# the rest of the code
谁能向我解释我哪里错了,我该如何纠正?举个例子就完美了。
P.S.:如果您认为这是一个愚蠢的问题,请提前道歉。
【问题讨论】:
-
这与会话无关。为什么你认为它会?相反,您应该向我们展示保存评论并将其与用户关联的代码。
-
以上代码仅用于测试。假设同时登录了 3 个用户(A、B 和 C),当每个用户访问 profile.html 时,我只想打印他的用户名。我希望看到每个用户的名称(A、B、C),但打印 C、C、C,因为 C 是 最后一个登录的用户。不知何故覆盖了其他帐户,因为如果我刷新 A 的页面,C 的帐户就会出现。
-
不,这不会发生,因为这不是会话所做的。但是正如我所说的,这里不需要使用会话,您应该显示相关代码。
-
我只需要在这个小例子中了解在访问 profile.html 和刷新页面时我必须做什么来显示每个用户的用户名(A、B 和 C)
-
好的,假设我想要关于de用户的信息,如果我刷新A的页面会出现C的信息。以
c.execute("SELECT first_name, last_name, age from users where username=%s", [username])为例