Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Django 2.2上的临时链接与实际链接结合起来_Django - Fatal编程技术网

如何将Django 2.2上的临时链接与实际链接结合起来

如何将Django 2.2上的临时链接与实际链接结合起来,django,Django,我遇到了这样的问题。我在网站上创建了临时链接。我无法将临时链接与真实链接(视频链接)结合起来。这怎么可能?这样,用户只能通过临时链接访问视频。 通过这段代码我从这里过去的一个问题中看到了我的影响力(这不是指控,继续使用代码) 我不完全清楚您在寻找什么,但我假设您正在寻求以某种方式在一个链接上托管一个文件,但只允许通过临时链接访问该链接 以下是我的想法: 型号.py class OneTimeLink(models.Model): one_time_code = models.CharFi

我遇到了这样的问题。我在网站上创建了临时链接。我无法将临时链接与真实链接(视频链接)结合起来。这怎么可能?这样,用户只能通过临时链接访问视频。
通过这段代码

我从这里过去的一个问题中看到了我的影响力(这不是指控,继续使用代码)

我不完全清楚您在寻找什么,但我假设您正在寻求以某种方式在一个链接上托管一个文件,但只允许通过临时链接访问该链接

以下是我的想法:

型号.py

class OneTimeLink(models.Model):
    one_time_code = models.CharField(max_length=250)
    expiry_time = models.DateTimeField(default=datetime.now()+timedelta(hours=1), blank=True)
    video_code = models.CharField(max_length=250, default="XBRSJFLA")

    def __str__(self):
        return f"{self.expiry_time}"

class VideoLink(models.Model):
    url = models.CharField(max_length=250, default="THEVIDEOURL")
    pass_code = models.CharField(max_length=250, default="XBRSJFLA")

def randomString(stringLength=20):
    """Generate a random string of fixed length """
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(stringLength))

def generate_link(request):
    the_string = randomString(stringLength=20)
    OneTimeLink.objects.create(one_time_code=the_string)
    url = '<a href="/polls/one_time_link/{}">{}{}</a>'.format(the_string, request.build_absolute_uri(), the_string)
    return HttpResponse(url)

    path('one_time_link/<str:access_code>', views.one_time_link, name='one_time_link'),
    path('video_link/<str:video_code>', views.video_link, name='video_link'),
我创建了一个单独的视频链接模型,以确保用户以后不能返回视频URL(即,它只工作一次)
url
是指向视频的链接,
pass\u code
旨在与
OneTimeLink
中的
video\u code
相匹配

视图.py

class OneTimeLink(models.Model):
    one_time_code = models.CharField(max_length=250)
    expiry_time = models.DateTimeField(default=datetime.now()+timedelta(hours=1), blank=True)
    video_code = models.CharField(max_length=250, default="XBRSJFLA")

    def __str__(self):
        return f"{self.expiry_time}"

class VideoLink(models.Model):
    url = models.CharField(max_length=250, default="THEVIDEOURL")
    pass_code = models.CharField(max_length=250, default="XBRSJFLA")

def randomString(stringLength=20):
    """Generate a random string of fixed length """
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(stringLength))

def generate_link(request):
    the_string = randomString(stringLength=20)
    OneTimeLink.objects.create(one_time_code=the_string)
    url = '<a href="/polls/one_time_link/{}">{}{}</a>'.format(the_string, request.build_absolute_uri(), the_string)
    return HttpResponse(url)

    path('one_time_link/<str:access_code>', views.one_time_link, name='one_time_link'),
    path('video_link/<str:video_code>', views.video_link, name='video_link'),
这是视频链接url生成器。它将
video\u code
作为参数,并在
VideoLink
中检查匹配的
url
。如果发现链接仍然有效,它会更改URL,使其无法再次使用,并提供相关内容

url.py

class OneTimeLink(models.Model):
    one_time_code = models.CharField(max_length=250)
    expiry_time = models.DateTimeField(default=datetime.now()+timedelta(hours=1), blank=True)
    video_code = models.CharField(max_length=250, default="XBRSJFLA")

    def __str__(self):
        return f"{self.expiry_time}"

class VideoLink(models.Model):
    url = models.CharField(max_length=250, default="THEVIDEOURL")
    pass_code = models.CharField(max_length=250, default="XBRSJFLA")

def randomString(stringLength=20):
    """Generate a random string of fixed length """
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(stringLength))

def generate_link(request):
    the_string = randomString(stringLength=20)
    OneTimeLink.objects.create(one_time_code=the_string)
    url = '<a href="/polls/one_time_link/{}">{}{}</a>'.format(the_string, request.build_absolute_uri(), the_string)
    return HttpResponse(url)

    path('one_time_link/<str:access_code>', views.one_time_link, name='one_time_link'),
    path('video_link/<str:video_code>', views.video_link, name='video_link'),
path('one'u time'u link/',views.one'u time'u link,name='one'u time'u link'),
路径('video\u link/',views.video\u link,name='video\u link'),

只要URL是什么,以防你遇到麻烦。只要您进入Django管理并创建第一个
VideoLink
对象,整个过程都应该是一个有效的示例

您可以查看这个pypi包。它可以用来生成上传文件的一次性链接。它可以创建一个站点,其中包含所有上传文件的一次性链接。

请计算您所引用的代码的成本。@Caleb Goodman这里是我的代码,可以,但对我不起作用。我想为视频生成一个新链接。这段代码生成新链接,但我不能使用它,因为它会删除原始链接。如果它只是不删除原始链接,它会工作吗?也许我解释错了。我有一个指向视频的链接,我希望它不是可见的,而是隐藏的,像这样的一次性链接是指向一次性视频的链接。如果你经历了它,它就不再起作用了。但这段代码只指向链接。我需要将临时链接与真实链接结合起来。你难道不能在VideoLink中添加第三项作为文件的url,并通过临时生成的url为文件提供服务吗?那不符合你的需要吗?