request.user return 在 django 中究竟是什么,我们可以将它与字符串进行比较吗?
what exactly does request.user return in django, can we compare it with a string?
我是 Django 的新手,正在尝试一些东西。如果普通用户访问“\create”页面(调用名为 medicine_create_view 的函数),我想 return 一个名为“in_accessable.html”的页面,
否则 medicine_create.html.
管理员的名字是“npend”(使用print(request.user)
检查)所以我给了一个if语句来检查用户名是否是'npend',
我使用 request.user 方法获取用户名,即使我使用 admin 访问该页面,如果我尝试打印 request.user == "npend",每次都会打印 False,但我得到的是 false。
谁能帮我解决这个问题,谢谢。
使用的代码:
def medicine_create_view(request, *args,**kwargs):
my_form = Raw_Medicine_Form()
if request.method == 'POST':
my_form = Raw_Medicine_Form(request.POST)
if my_form.is_valid():
print(my_form.cleaned_data)
Medicine.objects.create(**my_form.cleaned_data)
else:
print(my_form.errors)
my_form = Raw_Medicine_Form()
context ={
"form" : my_form,
}
#print(request.user)
#print(request.user=="npend")
if(request.user=="npend"): return render(request,"App_1/medicine_create.html",context)
else: return render(request,"error_files/not_acessable.html",{})
Out_Put画面如图:
False
npend
[17/Jun/2021 09:37:36] "GET /create/ HTTP/1.1" 200 227
request.user
是一个 User
对象。如果你打印它,它会打印用户名,但要获取用户名的值,你必须使用 request.user.username
.
文档会告诉您这一点。我刚用谷歌搜索了一下。
request.user
是一个用户对象。这就是为什么在比较时得到 False 值的原因。但是在打印 User 对象时,调用了 __str__
魔法方法并将用户名打印为字符串。
print(request.user) # string
print(request.user=="npend") # False
您可以将其与实际用户名值进行比较:
if(request.user.username=="npend"):
return render(request,"App_1/medicine_create.html",context)
我是 Django 的新手,正在尝试一些东西。如果普通用户访问“\create”页面(调用名为 medicine_create_view 的函数),我想 return 一个名为“in_accessable.html”的页面, 否则 medicine_create.html.
管理员的名字是“npend”(使用print(request.user)
检查)所以我给了一个if语句来检查用户名是否是'npend',
我使用 request.user 方法获取用户名,即使我使用 admin 访问该页面,如果我尝试打印 request.user == "npend",每次都会打印 False,但我得到的是 false。
谁能帮我解决这个问题,谢谢。
使用的代码:
def medicine_create_view(request, *args,**kwargs):
my_form = Raw_Medicine_Form()
if request.method == 'POST':
my_form = Raw_Medicine_Form(request.POST)
if my_form.is_valid():
print(my_form.cleaned_data)
Medicine.objects.create(**my_form.cleaned_data)
else:
print(my_form.errors)
my_form = Raw_Medicine_Form()
context ={
"form" : my_form,
}
#print(request.user)
#print(request.user=="npend")
if(request.user=="npend"): return render(request,"App_1/medicine_create.html",context)
else: return render(request,"error_files/not_acessable.html",{})
Out_Put画面如图:
False
npend
[17/Jun/2021 09:37:36] "GET /create/ HTTP/1.1" 200 227
request.user
是一个 User
对象。如果你打印它,它会打印用户名,但要获取用户名的值,你必须使用 request.user.username
.
文档会告诉您这一点。我刚用谷歌搜索了一下。
request.user
是一个用户对象。这就是为什么在比较时得到 False 值的原因。但是在打印 User 对象时,调用了 __str__
魔法方法并将用户名打印为字符串。
print(request.user) # string
print(request.user=="npend") # False
您可以将其与实际用户名值进行比较:
if(request.user.username=="npend"):
return render(request,"App_1/medicine_create.html",context)