gpt4 book ai didi

python - 将redis与django集成

转载 作者:IT王子 更新时间:2023-10-29 06:07:24 24 4
gpt4 key购买 nike

我是 Django 的新手。我的任务是设计一个后端,其中将有登录系统(使用 django 提供的默认用户表)。还有另外两个表,一个是 image 表,它有 imgvalue 列,其中包含来自 redis 数据库的键。另一个表 (imgacl) 是为用户提供访问控制,以查看所需用户有权访问的特定图像。 redis 数据库实际上是用键值对存储图像,该键存储在 imgvalue 列中。这是我的代码:

模型.py:

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class Image(models.Model):
imgvalue = models.Charfield(max_length =250)

class Imageacl(models.Model):
id = models.ForeignKey(Image,on_delete =models.CASCADE)
userlist= models.Textfield(null=True)

用户列表包含可以看到特定图像的用户列表。一个单独的 python 程序,用于在 Redis 数据库中存储 50 张图像。假设有5个用户,user1可以查看10张图片,user2可以查看15张图片...

import redis
from PIL import Image
rd = redis.StrictRedis()
for x in range(1,51):
img = open("{}.jpg".format(x),"rb").read()
rd.set("key{}".format(x),img)

我有两个问题:
1) 我将如何将 redis 与 django 集成 &
2) 我将如何向用户提供访问控制??

最佳答案

您可以使用 redis 来存储对图像的引用,并存储实际图像:

  1. 在服务器中,如果您允许您的系统以高效的方式提供静态文件(请记住,如果在同一台服务器中共存,提供文件也会降低您的应用程序性能)

  2. 在像 S3 这样的对象存储服务中,它可以为您提供处理这些图像的良好性能。

在redis中,存储图片的url字符串:

import boto3

s3 = boto3.resource('s3')
buck = s3.Bucket('name')
for object in buck.objects.all():
# print(object)
rd.set("key{}".format(x), object.key)

或者如果您将图像存储在文件系统中:

import os

folder=os.listdir("path/to/img/")
for file in folder:
rd.set("key{}".format(x), "path/to/img/%s"%file )

要实现用户访问控制,请看this问题,有几个 django 模块可以进行粒度访问控制。

关于python - 将redis与django集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48275385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com