HTTP POST Data from Arduino to Django Database
1)Depends, if your arduino is on the same local network than your Django Server then you don't need a public IP, otherwise you would have to forward your Django Server IP & port so its accesible from internet.
2) Not really, you can do a traditional POST request to a normal view on Django.
I know it is frowned upon to post questions without code, but I have been stuck for days thinking of how to handle this issue and cant think of a solution. 
My setup is this:


Arduino Mega w/ 4G + GPS Shield from Cooking Hacks
Django Server set up with Python
Postgresql Database


Because the 4G + GPS shield has the capability for http commands, I want to use http POST to send gps data to my Django Server and store that information in my Postgresql database. Another thing to keep in mind is I am running a Django test server on my Localhost, so I need to POST to that local host. 
Because I am not posting through a form and it is not synchronous I am really confused as to how the Django server is supposed to handle this asynchronous POST. It will look like this (I imagine):
Arduino (POST) --> Django Server (Localhost) --> Postgresql Database
So I have 2 questions:
1) In order to successfully send a POST to my local Django Server, should my host be my public router IP and the Port be the same as that which I am running my server on? Is there something else I am missing?
2) Do I need to use Django REST Framework to handle the POST request? if not, how would I implement this in my views.py?
I am trying to get a reference point on the problem in order to visualize how to do it. I DONT need coded solutions. Any help on this would be greatly appreciated, and if you have any other questions I will be quick to answer.