Django Web框架的比特币应用集成

django-bitcoin的Python项目详细描述


Features

  • 简单的比特币钱包管理
  • 比特币支付处理
  • 比特币市场信息

Installation

要安装,只需将应用程序添加到您的设置中。py installed_apps,如:

INSTALLED_APPS = [
    ...
    'django_bitcoin',
    ...
]
```

此外,您还必须运行本地比特币实例,并在设置中指定连接字符串:

BITCOIND_CONNECTION_STRING = "http://bitcoinuser:password@localhost:8332"

Usage

Wallet websites, escrow services using the “Wallet”-model

您可以使用wallet类来执行不同的比特币移动应用程序。典型的例子是一个市场风格的网站,有多个卖家和买家。或自由职业者网站,需要代管。或者甚至可以用这个抽象来完成交换(但是需要一些额外的类)。

请注意,当您在钱包对象之间移动比特币时,只有传入和传出交易才需要比特币交易。 系统“钱包”对象之间的交易不会生成“真实”比特币交易。每个事务(传入事务除外)都会记录到wallettransaction对象以简化记帐。

这也意味着比特币交易是“混合的”:

from django_bitcoin import Wallet, currency

class Profile(models.Model):
    wallet = ForeignKey(Wallet)
    outgoing_bitcoin_address = CharField()

class Escrow(models.Model):
    wallet = ForeignKey(Wallet)
    buyer_happy = BooleanField(default=False)

buyer=Profile.objects.create()
seller=Profile.objects.create()

purchase=Escrow.objects.create()

AMOUNT_USD="9.99"

m=currency.Money(AMOUNT_USD, "USD")
btc_amount=currency.exchange(m, "BTC")

print "Send "+str(btc_amount)+" BTC to address "+buyer.wallet.receiving_address()

sleep(5000) # wait for transaction

if p1.wallet.total_balance()>=btc_amount:
    p1.send_to_wallet(purchase, btc_amount)

    sleep(1000) # wait for product/service delivery

    if purchase.buyer_happy:
        purchase.wallet.send_to_wallet(seller.wallet)
        seller.wallet.send_to_address(seller.outgoing_bitcoin_address, seller.wallet.total_balance())
    else:
        print "WHY U NO HAPPY"
        #return bitcoins to buyer, 50/50 split or something

Templatetags

要在您的视图中显示交易历史记录和简单的电子钱包标记行,请使用以下模板标记:

{% load currency_conversions %}
<!-- display balance tagline, estimate in USD and received/sent -->
{% wallet_tagline profile.bitcoin_wallet %}
<!-- display list of transactions as a table -->
{% wallet_history profile.bitcoin_wallet %}

相互兑换货币的简单方法:BTC2USD、USD2BTC、Eur2BTC、BTC2EUR

在BitcoinCharts.com上,任何货币都可以使用Currency2BTC和BTC2Currency:

{% load currency_conversions %}
Hi, for the pizza: send me {{bitcoin_amount}}BTC (about {{ bitcoin_amount|btc2usd }}USD).

使用google charts api显示比特币支付的二维码:

{% load currency_conversions %}
Pay the following payment with your android bitcoin wallet:
{% bitcoin_payment_qr wallet.receiving_address bitcoin_amount %}.

The same but display also description and an estimate in EUR:
{% bitcoin_payment_qr wallet.receiving_address bitcoin_amount "One beer" "EUR" %}.

Transaction notifications

要启用比特币交易通知,请在settings.py中设置以下标志:

BITCOIN_TRANSACTION_SIGNALING = True

之后,您需要设置一个cron作业来每分钟运行一次,如下所示:

* * * * * (cd $APP_PATH && python manage.py python manage.py CheckTransactions >> $APP_PATH/logs/email_sends.log 2>&1)

之后,您可以定义您的余额更改和余额更改确认信号:

from django_bitcoin.models import balance_changed, balance_changed_confirmed
from django.dispatch import receiver


@receiver(balance_changed)
def balance_changed_handler(sender, **kwargs):
    pass
    # try:
    # print "balance changed", sender.id, kwargs["changed"], sender.total_balance()


@receiver(balance_changed_confirmed)
def balance_changed_confirmed_handler(sender, **kwargs):
    pass

Community

目前,django-bitcoin

还有更多!

如果你有一个使用django比特币的网站,给我一封电子邮件,我会链接到这里。

Changelog

0.2 (2013-05-14)

  • readme.rst,更改日志和发布流程工作流更新[miohtama]
  • 历史价格数据处理[Jeremias Kangas]

0.1

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当使用RequestDispatcher时,servlets Java最终没有被调用   java生成对具有可变参数数的方法的调用   java如何使用select子句中的参数化列映射iBATIS的查询?   java无法创建类型为org的插件。阿帕奇。登录中。log4j。果心阿佩德。元素RollingFile的RollingFileAppender   java当子实体和父实体之间存在OneTONE JPA关系时,是否可以将其与父实体一起持久化?   Android上的java Facebook集成fbconnect断开链接   获取方法调用方的java机制   从列表创建Oracle阵列时出现java问题   添加和检索元素的ArrayList的java ArrayList   在java中从字符串中删除无效的XML字符   java如何构建完整生成的maven模块   java如何准确地改变播放所有分辨率midi文件的速度?   shell javac:无效标志:/src/中位_度。ubuntu中的java   java使用从其他类的方法检索到的信息