Хранение данных в консоли в базе данных и доступ к ней - PullRequest
0 голосов
/ 17 октября 2018

Я создаю веб-приложение, которое получает доступ к местоположению пользователя, когда для этого нажимается определенная кнопка. Я использую HTML-геолокацию API .

Ниже приведено местоположениеФайл .js:

`var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude +
    "<br>Longitude: " + position.coords.longitude;
    console.log(position.coords.latitude)
    console.log(position.coords.longitude)
}

Ниже приведен фрагмент HTML-файла:

<button onclick="getLocation()">HELP</button>
<p id="demo"></p>
<script src="../static/location.js"></script>

Я хочу отправить эту информацию (т.е. долготу / широту пользователя) насписок писем, связанных с этим пользователем, но я не знаю, как сохранить эти данные и получить к ним доступ после нажатия кнопки.Было бы очень полезно, если бы кто-то мог начать с того, как сохранить эти данные, соответствующие пользователю, и получить к ним доступ из базы данных.

1 Ответ

0 голосов
/ 18 октября 2018

Если вы хотите сохранить эту информацию в базе данных django, то, возможно, будет проще сделать это в представлении django.Это может быть RedirectView, который просто перенаправляет на тот же вид после нажатия кнопки.

Ранее я использовал загруженную базу данных GeoLite2-City.mmdb, которая не всегда актуальна, ноok.

Вы можете получить IP-адрес запроса в django с помощью библиотеки ipware.Затем преобразуйте его в IP-объект Python в IPy.Затем вы можете использовать библиотеку geoip для получения информации из БД.

Импортировать следующие библиотеки:

from ipware.ip import get_ip
from IPy import IP
import geoip2.database

Тогда ваш метод получения IP-адресов будет выглядеть примерно так:

class MyRedirectView(RedirectView)

    def get_redirect_url(self, request, *args, **kwargs):
        ## Write some code to handle the redirect url first ##

        ip_address = get_ip(self.request)

        """Ensure that the IP address is a valid IP first"""
        try:
            IP(ip_address)
        except Exception:
            logger.exception("GEOIP2 error: ")

        """Then get the IP location"""
        geo_path = settings.GEOIP_PATH
        reader = geoip2.database.Reader(geo_path + '/GeoLite2-City.mmdb')
        try:
            response = reader.city(ip_address)
            city = response.city.name
            country = response.country.name

         ### Some code here to save to your DB
        return super(MyRedirectView, self).get_redirect_url(*args, **kwargs)

Если вам нужна гораздо более точная служба определения местоположения по IP, вы можете использовать вызов API для чего-то вроде http://ip -api.com / .Но тогда вам придется подождать этот ответ, прежде чем подавать следующий вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...