Python -Django共享两个身份验证的用户之间的文件



我正在使用Python(3.7)和Django(2.5)进行一个项目,其中我正在构建一个诸如自由职业网站之类的应用在实施交付提交部分时。

用户将创建一项用于出售的服务,然后买家将订购他的服务,此后必须完成商定的工作,并需要将工作提交给买方作为交付。

交货将以文件的形式,可以是文本文件,图像文件,音频,视频或代码文件,问题是我不知道如何在Django中实现此内容,因此用户可以以私人方式将文件发送给另一个用户,因此只有这两个用户才能访问该文件。

这是我到目前为止所拥有的,对于买方和卖方之间的订单:

class Order(models.Model):
    status_choices = (
        ('Active', 'Active'),
        ('Completed', 'Completed'),
        ('Late', 'Late'),
        ('Short', 'Short'),
        ('Canceled', 'Canceled'),
        ('Submitted', 'Submitted')
    )
    gig = models.ForeignKey('Gig', on_delete=models.CASCADE)
    seller = models.ForeignKey(User, on_delete=models.CASCADE, related_name='selling')
    buyer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='buying')
    created_at = models.DateTimeField(auto_now=timezone.now())
    charge_id = models.CharField(max_length=234)
    days = models.IntegerField(blank=False)
    status = models.CharField(max_length=255, choices=status_choices)
    def __str__(self):
        return f'{self.buyer} order from {self.seller}'

有任何想法将文件共享作为两个经过身份验证的用户之间的交付?

预先感谢!

有很多方法可以实现。

您可以简单地为访问文件的用户添加一个字段,并在要求下载文件时下载文件,并允许他们下载该特定文件。

使用您的模型,您可以做这样的事情:

给出gig字段是您的文件,您可以创建一个slug或基本上的文件链接,当用户单击它时,您可以获取该用户的所有订单,然后检查已使用这些访问权限授予访问的文件订单,如果用户要求下载的文件是其中之一,只需让他下载。

您可以让用户使用X-Sendfile下载文件,以帮助您检查是否允许用户下载文件。在Stackoverflow上的示例

示例代码:

def download_file_view(request, file_id):
    if not request.user:
        # Redirect user or ...
    if not request.user.is_authenticated:
        # Redirect user or ...
    # Check if this user has any orders with that file linked to it:
    if Order.objects.filter(buyer=request.user, gig__pk=file_id).exists():
        # User has bought this file already and the download should be allowed.

您可以在那里检查到期日期和各种各样的东西。

最新更新