如何解决无法在 Django 中登录用户名
我试图将 User 作为模型中的外键,但出现错误。
- 当我尝试时:
qr.claimed = True
user = get_object_or_404(User,id=request.user.id)
qr.branch = user
qr.save();
输出:
AttributeError: 'str' object has no attribute 'user'
- 当我尝试发布时:
qr.claimed = True
get_user = request.POST.get('branch')
user = User.objects.get(id=get_user)
qr.branch = user
qr.save();
输出:
AttributeError: 'str' object has no attribute 'POST'
- 当我在另一个 python 文件中定义用户并尝试从那里获取时:
qr.claimed = True
get_user = pythonfile.user
user = User.objects.get(id=get_user)
qr.branch = user
qr.save();
输出:
TypeError: Field 'id' expected a number but got <function user at 0x0E777E38>.
- request.user -> AttributeError: 'str' 对象没有属性 'user'
- request.POST -> AttributeError: 'str' 对象没有属性 'POST'
- 请求有任何错误或缺少要安装/导入的任何包吗?
更新:
@csrf_exempt
def decodeAjax(request):
if request.POST:
decodedData = barCode.decode(request.POST['imgBase64'])
if decodedData:
json_data = json.dumps(decodedData)
print(json_data)
return JsonResponse(json_data,safe=False)
return JsonResponse({"code" : 'NO BarCode Found'})
def decode(request):
# Find barcodes and QR codes
imgstr = re.search(r'base64,(.*)',request).group(1) #url
image_bytes = io.BytesIO(base64.b64decode(imgstr))
im = Image.open(image_bytes)
arr = np.array(im)[:,:,0]
decodedObjects = pyzbar.decode(arr)
#print(decodedObjects)
# return decodedObjects.Decoded
# Print results
data = []
for obj in decodedObjects:
qrs = Scanner.objects.all()
for qr in qrs:
if obj.data.decode('utf-8') in qr.ID:
dt = 'Successfully Claimed!'
btn = 'Claim Another'
img = 'tick.gif'
if qr.claimed == True:
dt = 'Already Claimed at %s'%(localtime(qr.scanned_at))
img = 'cross.png'
else:
qr.claimed = True
qr.save();
break
else:
dt = 'Invalid QR Code'
btn = 'Try Another'
img = 'cross.png'
data.append({
"code":obj.data.decode('utf-8'),#"type": obj.type,"dt": dt,"btn":btn,"img":img
})
return data
解决方法
您检查方法:
@csrf_exempt
def decodeAjax(request):
if request.method == 'POST':
decodedData = barCode.decode(request.POST['imgBase64'])
# …
您传递给 decode
的项目不是一个 HttpRequest
对象,而是 base64 编码的图像。因此,您可能希望将其重命名为:
def decode(base64img):
imgstr = re.search(r'base64,(.*)',base64img).group(1)
# …
如果您需要某个地方的请求,则需要传递 request
,而不是 。request.POST['imgBase64']
此外,我真的建议不要制作带有 CSRF 例外的方法。您可以发送 AJAX section of the documentation 中指定的 CSRF 令牌。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。