How is Django able to grant reserved port numbers?
You should use a proper server instead of Django's test server such as nginx or apache to run the server in production on port 80. Running something like sudo python manage.py runserver 0.0.0.0:80 is not recommended at all.
Using this command 

python manage.py runserver 0.0.0.0:8000

we can host a Django server locally on any port.So a developer can use reserved and privileged port numbers say

python manage.py runserver 127.0.0.1:80

So, now I am using port 80 defined for the HTTP protocol.
So, why does this not raise any issues and how is this request granted ?