我是Django的新手,正在尝试一些东西。如果普通用户访问“\create”页面(调用名为medicine\u create\u view的函数),我想返回一个名为“in\u accessible.html”的页面, else medicine_create.html
admin的名称是“npend”(使用print(request.user)
检查),因此我给出了一个if语句来检查用户名是否为“npend”,
我使用request.user方法获取用户名,即使我使用admin访问页面,如果我尝试打印request.user==“npend”,则每次都会打印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",{})
输出屏幕如图所示:
False
npend
[17/Jun/2021 09:37:36] "GET /create/ HTTP/1.1" 200 227
request.user
是一个User
对象。如果您打印它,它将打印用户名,但要获取用户名的值,必须使用request.user.username
文件会告诉你这一点。我只是用谷歌搜索了一下
request.user
是一个用户对象。这就是为什么在比较时会得到一个False值。但是,在打印用户对象时,会调用__str__
magic方法,并将用户名打印为字符串您可以将其与实际用户名值进行比较:
相关问题 更多 >
编程相关推荐