gpt4 book ai didi

python - 如何使用 Django 将表单/字段内容上传到 IPFS 节点?

转载 作者:太空狗 更新时间:2023-10-30 01:37:12 24 4
gpt4 key购买 nike

我想覆盖 django ImageField 的上传行为,以便在上传到某个 url 后,文件将被添加到 ipfs 节点。

例如,我的模型是这样的:

class Profile(models.Model):
picture = models.ImageField(upload_to=upload_location, blank=True)

我首先尝试像保存任何其他图像一样保存它,但随后我给它一个 IPFS 哈希,这将允许用户加载数据客户端。

在我看来,我有以下代码来运行 ipfs 守护进程的实例。

import ipfsapi
from subprocess import call

os.system("ipfs daemon")
api = ipfsapi.connect('127.0.0.1', 5001)

但是,当我尝试运行 python manage.py makemigrationsrunserver 时,守护进程运行但命令的其余部分没有运行。

Initializing daemon...
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/174.56.29.92/tcp/4001
Swarm listening on /ip4/192.168.1.109/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

如何启动 ipfs 守护进程和 django 服务器?它们看起来不像是在同一端口(Django 8000、IPFS 8080)上监听,那么为什么我会遇到这个问题?

最佳答案

https://pydigger.com/pypi/django-ipfs-storage

安装

.. 代码::bash

pip install django-ipfs-storage

配置

默认 ipfs_storage将内容添加并固定到 IPFS 守护进程在本地主机上运行并返回指向公共(public)的 URL https://ipfs.io/ipfs/ HTTP网关

要自定义它,请在您的 settings.py 中设置以下变量:

  • IPFS_STORAGE_API_URL : 默认为 'http://localhost:5001/api/v0/' .
  • IPFS_GATEWAY_API_URL :默认为 'https://ipfs.io/ipfs/' .

设置IPFS_GATEWAY_API_URL'http://localhost:8080/ipfs/'到通过本地守护程序的 HTTP 网关提供内容。

用法

有两种方法可以使用 Django 存储后端。

作为默认后端~~~~~~~~~~~~~~~~~~

使用 IPFS 作为 Django’s default file storage
backend <https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-DEFAULT_FILE_STORAGE>
__:

.. 代码::python

# settings.py

DEFAULT_FILE_STORAGE = 'ipfs_storage.InterPlanetaryFileSystemStorage'

IPFS_STORAGE_API_URL = 'http://localhost:5001/api/v0/'
IPFS_STORAGE_GATEWAY_URL = 'http://localhost:8080/ipfs/'

对于特定的文件字段~~~~~~~~~~~~~~~~~~~~~~~~

或者,您可能只想将 IPFS 存储后端用于单个字段:

.. 代码::python

from django.db import models

from ipfs_storage import InterPlanetaryFileSystemStorage


class MyModel(models.Model):
# …
file_stored_on_ipfs = models.FileField(storage=InterPlanetaryFileSystemStorage())
other_file = models.FileField() # will still use DEFAULT_FILE_STORAGE

关于python - 如何使用 Django 将表单/字段内容上传到 IPFS 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840896/

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