Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Dynamic Models in Django-Part1 (adding new fields to models from admin)
Some times in the production level there may be a chance of adding new fields to our model.With the normal django models when we add new field to the model the database is not able to identify the new field.To make database identify the new field we have to drop the existing database from the database and sync our application again.During the time of production it is not possible to remove the existing data. The solution for this is Django-eav.With this we can add any no of fields to our models on fly. Steps To add New fields to the models Using django-eav: Step1:Install django-eav using the following command pip install -e git+git://github.com/mvpdev/django-eav.git#egg=django-eav Step2:Add 'eav' to your INSTALLED_APPS in your project’s settings.py file. Step3:Register your models with eav. To register any model with EAV, you simply need to add the registration line somewhere that will be executed when django starts: import eav eav.register(Patient) Keep the above lines any where in your models.py Step4:Configure your models so that you can create new fields from admin it self You can even have your eav attributes show up just like normal fields in your models admin pages. Just register using the eav admin class: from django.contrib import admin … -
E-commerce (paypal) integration with Django
E-commerce is integration is becoming almost essential for every web application now a days. There are so many payment gateways to integrate with our application. Some of them are Amazon payments, Asiapay, BPAY, Brain Tree, PayPal ...etc. Out of these now in this we'll see how to integrate Paypal with our django Application. Integrating Paypal with Django: Paypal provides two kinds of api for integrating any application with it. They are 1.PayPal REST api 2.PayPal CLASSIC api 1. Integrating with REST api: Integrting paypal with dajngo with REST api is some what easy and easy to understnad. Paypal provides a sdk for integrating PayPal with Django, that is 'paypal rest sdk'. For more about restsdk check this https://github.com/paypal/rest-api-sdk-python and https://developer.paypal.com/webapps/developer/docs/api/ 2.Integrating Paypal with classic api: First intialise the paypal urls for endpoint and paypal connection as follows. End_url = 'https://api-3t.sandbox.paypal.com/nvp' PAYPAL_URL = 'https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=' Buyers use Express Checkout to pay you on PayPal's secure site and return to your site to complete the transaction. 1.Setting express checkout for transaction: params = { 'USER' : 'xxxxxxxx', # Edit this to your API user name 'PWD' : 'xxxxxxxx', # Edit this to your API password 'SIGNATURE' : 'AFcWxV21C7fd0v3bYYYRCpSSRl31A0ltbCXAvF44j6B.kUqG3MePFr40', 'METHOD':'SetExpressCheckout', 'VERSION':86, 'PAYMENTREQUEST_0_PAYMENTACTION':'SALE', # type of payment 'PAYMENTREQUEST_0_AMT':50, # amount of … -
E-commerce (paypal) integration with Django
E-commerce is integration is becoming almost essential for every web application nowadays. There are so many payment gateways to integrate with our application. Some of them are Amazon payments, Asiapay, BPAY, Brain Tree, PayPal ...etc. Out of these now in this, we'll see how to integrate Paypal with our Django Application. Integrating Paypal with Django: Paypal provides two kinds of API for integrating any application with it. They are 1.PayPal REST API 2.PayPal CLASSIC API 1. Integrating with REST API: Integrating PayPal with Django with REST API is somewhat easy and easy to understand. Paypal provides an SDK for integrating PayPal with Django, that is 'PayPal rest SDK'. For more about restsdk check this https://github.com/paypal/rest-api-sdk-python and https://developer.paypal.com/webapps/developer/docs/api/ 2.Integrating Paypal with classic API: First, initialize the PayPal URLs for endpoint and PayPal connection as follows. End_url = 'https://api-3t.sandbox.paypal.com/nvp' PAYPAL_URL = 'https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=' Buyers use Express Checkout to pay you on PayPal's secure site and return to your site to complete the transaction. 1.Setting express checkout for the transaction: params = { 'USER' : 'xxxxxxxx', # Edit this to your API user name 'PWD' : 'xxxxxxxx', # Edit this to your API password 'SIGNATURE' : 'AFcWxV21C7fd0v3bYYYRCpSSRl31A0ltbCXAvF44j6B.kUqG3MePFr40', 'METHOD':'SetExpressCheckout', 'VERSION':86, 'PAYMENTREQUEST_0_PAYMENTACTION':'SALE', # type of payment 'PAYMENTREQUEST_0_AMT':50, # amount of transaction 'PAYMENTREQUEST_0_CURRENCYCODE':'USD', 'cancelUrl':"xxxxxxxxxxxxx", … -
Dynamic Models in Django-Part1 (adding new fields to models from admin)
Sometimes at the production level, there may be a chance of adding new fields to our model.With the normal Django models when we add a new field to the model, the database is not able to identify the new field.To make database identify the new field we have to drop the existing database from the database and sync our application again.During the time of production, it is not possible to remove the existing data. The solution for this is Django-eav.With this, we can add any no of fields to our models on fly. Steps To add New fields to the models Using Django-eav: Step1: Install Django-eav using the following command pip install -e git+git://github.com/mvpdev/django-eav.git#egg=django-eav Step2: Add 'eav' to your INSTALLED_APPS in your project’s settings.py file. Step3: Register your models with eav. To register any model with EAV, you simply need to add the registration line somewhere that will be executed when Django starts: import eav eav.register(Patient) Keep the above lines anywhere in your models.py Step4: Configure your models so that you can create new fields from admin itself You can even have your eav attributes show up just like normal fields in your model's admin pages. Just register using the eav admin class: from django.contrib … -
Djangocon by train (plus travel tips)
I'm busy packing my bags right now. One large backpack and my regular laptop backpack. And a small money belt. The laptop bag is what I use daily. Going to a conference practically forces me to empty it out completely. Only time during the year that it happens. So that's a good thing. During the conference, I use it for my laptop, power cable, the programme, a water bottle and my jacket. For conferences, you often walk quite a bit through a city, so a proper backpack is way preferrable. During travel, this is what I use for everything I need to have handy, like extra snacks, a book, earphones, the printed-out hotel booking, etc. The large backpack is for my spare clothes, spare book, tooth brush. The regular stuff. I much prefer a big backpack to some trolley on little wheels I have to drag behind me. It might not look so "standard", but that doesn't matter much to me. It is simply more practical. Though, I must confess, the combination of two backpacks naturally leaves a little bit to be desired :-) The money belt is actually not the belt-around-the-waist type, but a small flat bag that hangs … -
Newsletter #5
Welcome to the latest news about Two Scoops Press, Daniel Roy Greenfeld (pydanny), and Audrey Roy Greenfeld (audreyr). Two Scoops of Django 1.8 is in Print We're happy to announce that the print edition of Two Scoops of Django 1.8 is now available as a physical, printed book. We're taking pre-orders now, to begin shipping on Friday, June 5th (that's when the books begin arriving at our house). Purchase Two Scoops of Django 1.8 Print Paperback in our shop In addition to the print book, we've also added a print/ebook bundle that is US$24.95 cheaper than if you bought the book and PDF separately. If you purchased the Early Release PDF, you will be receiving an email containing a discount code that works in our store worth US$24.95 off the print edition. We couldn't have done this without the encouragement of friends from around the world, or the contributors who so diligently submitted changes and corrections. From the bottom of our hearts, we thank you. You can also purchase Two Scoops of Django 1.8 on Amazon. You should be able to purchase the printed book on Amazon.in and Flipkart soon. If you have any questions, please read the Two Scoops … -
Newsletter #5
Welcome to the latest news about Two Scoops Press, Daniel Roy Greenfeld (pydanny), and Audrey Roy Greenfeld (audreyr). Two Scoops of Django 1.8 is in Print We're happy to announce that the print edition of Two Scoops of Django 1.8 is now available as a physical, printed book. We're taking pre-orders now, to begin shipping on Friday, June 5th (that's when the books begin arriving at our house). Purchase Two Scoops of Django 1.8 Print Paperback in our shop In addition to the print book, we've also added a print/ebook bundle that is US$24.95 cheaper than if you bought the book and PDF separately. If you purchased the Early Release PDF, you will be receiving an email containing a discount code that works in our store worth US$24.95 off the print edition. We couldn't have done this without the encouragement of friends from around the world, or the contributors who so diligently submitted changes and corrections. From the bottom of our hearts, we thank you. You can also purchase Two Scoops of Django 1.8 on Amazon. You should be able to purchase the printed book on Amazon.in and Flipkart soon. If you have any questions, please read the Two Scoops … -
Newsletter #5
Welcome to the latest news about Two Scoops Press, Daniel Roy Greenfeld (pydanny), and Audrey Roy Greenfeld (audreyr). Two Scoops of Django 1.8 is in Print We're happy to announce that the print edition of Two Scoops of Django 1.8 is now available as a physical, printed book. We're taking pre-orders now, to begin shipping on Friday, June 5th (that's when the books begin arriving at our house). Purchase Two Scoops of Django 1.8 Print Paperback in our shop In addition to the print book, we've also added a print/ebook bundle that is US$24.95 cheaper than if you bought the book and PDF separately. If you purchased the Early Release PDF, you will be receiving an email containing a discount code that works in our store worth US$24.95 off the print edition. We couldn't have done this without the encouragement of friends from around the world, or the contributors who so diligently submitted changes and corrections. From the bottom of our hearts, we thank you. You can also purchase Two Scoops of Django 1.8 on Amazon. You should be able to purchase the printed book on Amazon.in and Flipkart soon. If you have any questions, please read the Two Scoops … -
Improved Django Tests
Improved Django Tests -
Celery With Supervisor
Celery: Celery is a task queue with focus on real-time processing,while also supports task scheduling. Task queues are used as mechanisms to distribute work across multiple threads or machines. A task queues input is a unit of work called a task,dedicated worker processes and constantly moniter the queue for new work to perform. Celery communicates via messages using a broker to mediate between workers and clients.To initiate a task client puts a message on the queue, then the broker delivers that message to a worker. Note: You can get more about celery http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html To run celery in virtual environment need to type the following command in your virtual environment export C_FORCE_ROOT="true" Running the worker with supervisor In production you will want to run the worker in the background as a daemon and some times there may be a chance of stopping of celery worker automatically then it should be restarted automatically. To do thes tasks you need to use the tools provided like supervisord. First, you need to install supervisor in your virtualenv and generate a configuration file. $ pip install supervisor $ cd /path/to/your/project $ echo_supervisord_conf > supervisord.conf Next, just add the following section in configuration file: … -
My First Django Girls Event
Since the first Django Girls event I've watched the movement grow with a sense of of awe and inevitability. There is something about it that is both contagious and powerful, and in a very good way. This past weekend I had my first chance to attend one of their events in Ensenada, Mexico. This is what we saw. A room full of attendees with laser focus. The coaches were clearly inspired by the dedication of the women who had come to learn and grow. #djangogirls A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 7:42am PDT By the end of the day, the energy hadn't dwindled, it had accelerated. Saying goodbye to #djangogirls Ensenada. Everyone stayed until the very end. A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:10am PDT No one wanted the day to end. #djangogirls Ensenada attendees so dedicated they stayed after the event finished! :-) A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:14am PDT We did our small part. We coached and did our best to give an inspirational talk. Programming Gives You Superpowers from Audrey & Daniel Roy Greenfeld The Django Girls Ensenada … -
Django Girls Ensenada 2015
Since the first Django Girls event I've watched the movement grow with a sense of of awe and inevitability. There is something about it that is both contagious and powerful, and in a very good way. This past weekend I had my first chance to attend one of their events in Ensenada, Mexico. This is what we saw. A room full of attendees with laser focus. The coaches were clearly inspired by the dedication of the women who had come to learn and grow. #djangogirls A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 7:42am PDT By the end of the day, the energy hadn't dwindled, it had accelerated. Saying goodbye to #djangogirls Ensenada. Everyone stayed until the very end. A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:10am PDT No one wanted the day to end. #djangogirls Ensenada attendees so dedicated they stayed after the event finished! :-) A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:14am PDT We did our small part. We coached and did our best to give an invited inspirational talk. Programming Gives You Superpowers from Audrey & Daniel Roy Greenfeld The Django Girls … -
Django Girls Ensenada 2015
Since the first Django Girls event I've watched the movement grow with a sense of of awe and inevitability. There is something about it that is both contagious and powerful, and in a very good way. This past weekend I had my first chance to attend one of their events in Ensenada, Mexico. This is what we saw. A room full of attendees with laser focus. The coaches were clearly inspired by the dedication of the women who had come to learn and grow. #djangogirls A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 7:42am PDT By the end of the day, the energy hadn't dwindled, it had accelerated. Saying goodbye to #djangogirls Ensenada. Everyone stayed until the very end. A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:10am PDT No one wanted the day to end. #djangogirls Ensenada attendees so dedicated they stayed after the event finished! :-) A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:14am PDT We did our small part. We coached and did our best to give an invited inspirational talk. Programming Gives You Superpowers from Audrey & Daniel Roy Greenfeld The Django Girls … -
Cakti at CRS ICT4D 2015
This is Caktus’ first year taking part in the Catholic Relief Service’s (CRS) Information and Communication Technologies for Development (ICT4D) conference. The theme of this year’s conference is increasing the impact of aid and development tools through innovation. We’re especially looking forward to all of the speakers from organizations like the International Rescue Committee, USAID, World Vision, and the American Red Cross. In fact, the offerings are so vast, we thought we would provide a little cheat sheet to help you find Cakti throughout this year’s conference. Wednesday, May 27th How SMS Powers Democracy in Libya Vinod Kurup will explain how Caktus used Rapid SMS, a Django-based SMS framework, to build the world’s first voter registration system in Libya. Commodity Tracking System (CTS): Tracking Distribution of Commodities Jack Byrne of the International Rescue Committee(IRC) is the Syria Response Director. He will present on the Caktus-built system IRC uses to track humanitarian aid for Syrian refugees. Friday, May 29th Before the Pilot: Planning for Scale Caktus’ CTO Colin Copeland will be part of a panel discussion on what technology concepts matter most at the start of a project and the various challenges of pilot programs. Also on the panel will be … -
PyPy.js: What? How? Why? by Ryan Kelly (PyCon 2015 Must-See Talk: 5/6)
Part five of six in our PyCon 2015 Must-See Series, a weekly highlight of talks our staff enjoyed at PyCon. From Ryan Kelly's talk I learned that it is actually possible, today, to run Python in a web browser (not something that interprets Python-like syntax and translates it into JavaScript, but an actual Python interpreter!). PyPy.js combines two technologies, PyPy (the Python interpreter written in Python) and Emscripten (an LLVM-to-JavaScript converter, typically used for getting games running in the browser), to run PyPy in the browser. This talk is a must-see for anyone who's longed before to write client-side Python instead of JavaScript for a web app. While realistically being able to do this in production may still be a ways off, at least in part due to the multiple megabytes of JavaScript one needs to download to get it working, I enjoyed the view Ryan's talk provided into the internals of this project. PyPy itself is always fascinating, and this talk made it even more so. .embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } More in … -
My First Django Girls Event
Since the first Django Girls event I've watched the movement grow with a sense of of awe and inevitability. There is something about it that is both contagious and powerful, and in a very good way. This past weekend I had my first chance to attend one of their events in Ensenada, Mexico. This is what we saw. A room full of attendees with laser focus. The coaches were clearly inspired by the dedication of the women who had come to learn and grow. #djangogirls A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 7:42am PDT By the end of the day, the energy hadn't dwindled, it had accelerated. Saying goodbye to #djangogirls Ensenada. Everyone stayed until the very end. A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:10am PDT No one wanted the day to end. #djangogirls Ensenada attendees so dedicated they stayed after the event finished! :-) A photo posted by Daniel Greenfeld (@pydanny) on May 26, 2015 at 8:14am PDT We did our small part. We coached and did our best to give an inspirational talk. Programming Gives You Superpowers from Audrey & Daniel Roy Greenfeld -
Django interview questions ...
... and some answers Well I haven't conducted any interviews recently but this one has been laying in my drafts for a quite while so it is time to take it out of the dust and finish it. As I have said in Python Interview Question and Answers these are basic questions to establish the basic level of the candidates. Django's request response cycle You should be aware of the way Django handles the incoming requests - the execution of the middlewares, the work of the URL dispatcher and what should the views return. It is not necessary to know everything in the tiniest detail but you should be generally aware of the whole picture. For reference you can check "the live of the request" slide from my Introduction to Django presentation. Middlewares - what they are and how they work Middlewares are one of the most important parts in Django. Not only because they are quite powerfull and useful but also because the lack of knowledge about their work can lead to hours of debugging. From my experience the process_request and process_response hooks are the most frequently used and those are the one I always ask for. You should … -
Squashing and optimizing migrations in Django
With Django 1.7 we got built in migrations and a management command to squash a set of existing migrations into one optimized migration - for faster test database building and to remove some legacy code/history. Squashing works, but it still has some rough edges and requires some manual work to get the best of a squashed migration. Here are few tips for squashing and optimizing squashed migrations. -
Function caching decorator [reprise]
Sudden inspiration to write a blog. A long time ago, I wrote a post about a decorator that could somehow cache an expensive function. There were some ideas in the comments, but I never really followed up the idea I spawned in that particular post. And I never really gave it more thought or research either. Today I was at the PyGrunn conference. Tom Levine, author of Vlermv, held a presentation about that package. He told there that he wrote a decorator called `cache` (ctrl+f on the page I linked) that he uses for the exact same goal as I wrote my original post. He also noted that `cache` would probably be a bad name for a decorator like that. At the end of the presentation there was some time where people could ask questions. A lot of people gave Tom tips on packages he could look into and there was one helpful attendant who called out Python's `memoised` decorator. I noted that one of the commenters on my original post also named memoize, but that commenter linked to a decorator inside a Plone package. I searched a bit on the internet today and there's a class inside the PythonDecoratorLibrary … -
Pygrunn: Leveraging procedural knowledge - K Rain Leander
(One of the summaries of the 2015 Pygrunn conference ) K Rain Leander works at Red Hat and yes, she wore a bright red hat :-) She's a python and django newbie. She knows how it is to be a newbie: there is so much in linux that there are always areas where you're a complete newbie. So everyone is helpful there. "Amsterdam is the capital of the netherlands" is declarative knowledge. Procedural knowledge is things like learning to ride a bike or a knew language. So: What versus How. You might know declaratively how to swim, but procedurally you might still drown: you need to practice and try. Some background: she was a dancer in the USA. Unless you're famous, you barely scrape by financially. So she started teaching herself new languages. Both real-life languages and computer languages. Css, html for starters. And she kept learning. She got a job at Red Hat. You have to pass a RHCE certification test within 90 days of starting work there - or you're fired. She made it. She She has military background. In bootcamp, the purpose is not the pushups and the long runs. The goal is to break you down … -
Pygrunn: IPython and MongoDB as big data scratchpads - Jens de Smit
(One of the summaries of the 2015 Pygrunn conference ) A show of hand: about half the people in the room have used mongodb and half used ipython notebooks. There's not a lot of overlap. Jens de Smit works for optiver, a financial company. A "high-frequency trader", so they use a lot of data and they do a lot of calculations. They do a lot of financial transactions and they need to monitor if they made the right trades. Trading is now almost exclusively done electronically. Waving hands and shouting on the trading floor at a stock exchange is mostly a thing of the past. Match-making between supply and demand is done centrally. It started 15 years ago. The volume of transactions really exploded. Interesting fact: the response time has gone from 300ms to just 1ms! So... being fast is important in electronic trading. If you're slow, you trade at the wrong prices. Trading at the wrong prices means losing money. So speed is important. Just as making the right choices. What he had to do is to figure out how fast an order was made and wether it was a good order. Non-intrusively. So: what market event did we … -
Pygrunn: Python, WebRTC and You - Saúl Ibarra Corretgé
(One of the summaries of the 2015 Pygrunn conference ) Saúl Ibarra Corretgé does telecom and VOIP stuff for his work, which is what webRTC calls legacy :-) webRTC is Real-Time Communication for the web via simple APIs. So: voice calling, video chat, P2P file sharing without needing internal or external plugins. Basically it is a big pile of C++ that sits in your browser. One of the implementations is http://www.webrtc.org/. Some people say that webRTC stand for Well, Everybody Better Restart Their Chrome. Because the browser support is mostly limited to chrome. There's a plugin for IE/safari, though. There are several javascript libraries for webRTC. They help you set up a secure connection to another person (a "RTCPeerConnection"). The connection is directly, if possible. If not, due to firewalls for instance, you can use an external server. It uses ICE, which means Interactive Connectivity Establishment (see ICE trickle which he apparently used). A way to set up the connection. Once you have a connection, you have an RTCDataChannel. Which you can use, for instance, to send a file from one browser to another. As a testcase, he wrote Call Roulette. The app is in python, but in the browser … -
Pygrunn: Reliable distributed task scheduling - Niels Hageman
(One of the summaries of the 2015 Pygrunn conference) Note: see Niels Hageman's somewhat-related talk from 2012 . Niels works at Paylogic . Wow, the room was packed. They discovered the normal problem of operations that took too long for the regular request/response cycle. The normal solution is to use a task queue. Some requirements: Support python, as most of their code is in python. It has to be super-reliable. It also needs to allow running in multiple data centers (for redundacy). Ideally, a low-maintenance solution as they already have enough other work. Option 1: celery + rabbitMQ. It is widely used and relatively easy to use. But rabbitMQ was unreliable. With alarming frequency, the two queues in the two datacenters lost sync. They also got clogged from time to time. Option 2: celery + mysql. They already use mysql, which is an advantage. But... the combination was buggy and not-production ready. Option 3: gearman with mysql. Python bindings were buggy and non-maintained. And you could also run one gearman bundle, so multiple datacenters was out of the window. Option 4: do it yourself. They did this and ended up with "Taskman" (which I couldn't find online, they're planning on … -
Pygrunn: Data acquisition with the Vlermv database - Thomas Levine
(One of the summaries of the 2015 Pygrunn conference) Thomas Levine wrote vlermv. A simple "kind of database" by using folders and files. Python is always a bit verbose when dealing with files, so that's why he wrote vlermv. Usage: from vlermv import Vlermv vlermv = Vlermv('/tmp/a-directory') vlermv['filename'] = 'something' # ^^^ This saves a python pickle with 'something' to /tmp/a-directory/filename The advantage is that the results are always readable, even if you lose the original program. You can choose a different serializer, for intance json instead of pickle. You can also choose your own key_transformer. A key_transformer translates a key to a filename. Handy if you want to use a datetime or tuple as a key, for instance. The two hard things in computer science are: Cache invalidation. Naming things. Cache invalidation? Well, vlermv doesn't do cache invalidation, so that's easy. Naming things? Well, the name 'vlermv' comes from typing randomly on his (dvorak) keyboard... :-) Testing an app that uses vlermv is easy: you can mock the entire database with a simple python dictionary. What if vlermv is too new for you? You can use the standard library shelve module that does mostly the same, only it stores … -
Pygrunn: Laurence de Jong - Towards a web framework for distributed apps
(One of the summaries of the 2015 Pygrunn conference) Laurence de Jong is a graduate student. Everyone uses the internet. Many of the most-used sites are centralized. Centralization means control. It also gives scale advantages, like with gmail's great spam filter. It also has drawbacks. If the site goes down, it is really down. Another drawback is the control they have over our data and what they do with it. If you're not paying for it, you're the product being sold. Also: eavesdropping. Centralized data makes it easy for agencies to collect the data. And: censorship! A better way would be decentralized websites. There are existing decentralized things like Freenet, but they're a pain to install and the content on there is not the content you want to see... And part of it is stored on your harddisk... See also Mealstrom, which distributes websites as torrents. A problem there is the non-existence of proper decentralized DNS: you have unreadable hashes. A solution could be the blockchain system from bitcoin. It is called namecoin. This way, you could store secure DNS records to torrent hashes in a decentralized way. https://github.com/HelloZeroNet/ZeroNet uses namecoin to have proper DNS addresses and to download the …