


Django : trouver des utilisateurs à proximité avec des coordonnées et un rayon
Dans le monde d’aujourd’hui, les fonctionnalités basées sur la localisation sont de plus en plus importantes dans les applications Web. L'intégration de données géographiques peut améliorer considérablement l'expérience utilisateur, qu'il s'agisse de trouver des amis à proximité, de localiser des services à proximité ou d'activer du contenu géolocalisé.
Cet article explorera comment utiliser l'ORM de Django pour trouver des utilisateurs à proximité en fonction de leurs coordonnées géographiques (latitude et longitude) et d'un rayon spécifié.
Dans un premier temps, nous définirons un modèle de localisation pour stocker les coordonnées géographiques de chaque utilisateur. Nous utiliserons le modèle User intégré de Django pour associer chaque emplacement à un utilisateur.
from django.db import models from django.contrib.auth.models import User class Location(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) latitude = models.DecimalField(max_digits=9, decimal_places=6, db_index=True) longitude = models.DecimalField(max_digits=9, decimal_places=6, db_index=True) def __str__(self): return str(self.user)
user : Une clé étrangère pointant vers le modèle Django User. Cela établit une relation dans laquelle chaque utilisateur peut avoir un ou plusieurs emplacements. latitude et longitude : champ DecimalField utilisé pour stocker les coordonnées géographiques avec une précision allant jusqu'à six décimales, ce qui est suffisant pour la plupart des applications basées sur la localisation.
Implémenter la formule Haversine dans Django
La formule de Haversine est une formule mathématique largement utilisée pour calculer la distance sphérique entre deux points de la surface de la Terre, en utilisant la latitude et la longitude. Cette formule est particulièrement utile dans la navigation, le géorepérage, l'analyse géospatiale et les services basés sur la localisation.
Voici une fonction intégrant la formule Haversine dans le modèle Location pour amener les utilisateurs dans un rayon spécifié à l'aide de l'ORM Django :
from django.db.models import F, Value from django.db.models.functions import ACos, Cos, Radians, Sin class Location(models.Model): # ... [字段如上] ... @classmethod def get_users_within_radius(cls, center_latitude, center_longitude, radius_km): # Haversine 公式计算距离 distance_expression = ( ACos( Sin(Radians(F('latitude'))) * Sin(Radians(Value(center_latitude))) + Cos(Radians(F('latitude'))) * Cos(Radians(Value(center_latitude))) * Cos(Radians(F('longitude')) - Radians(Value(center_longitude))) ) * 6371 # 地球半径(公里) ) # 过滤指定半径内的用户 users_within_radius = cls.objects.annotate( distance=distance_expression ).filter( distance__lte=radius_km ).select_related('user') return users_within_radius
Cette méthode utilise la formule Haversine pour calculer la distance et filtrer les utilisateurs dans un rayon donné.
Attirez les utilisateurs dans un rayon spécifié
Avec la méthode get_users_within_radius
, il est facile d'obtenir des utilisateurs à proximité. Voici comment l'utiliser :
from .models import Location # 加德满都的纬度和经度 center_latitude = 27.707460 center_longitude = 85.312205 radius_km = 10 # 10 公里 nearby_location_points = Location.get_users_within_radius( center_latitude, center_longitude, radius_km ) nearby_users = [ location.user for location in nearby_location_points ]
Explication
-
Définir les coordonnées du centre : Remplacez
center_latitude
etcenter_longitude
par le point central souhaité, tel que l'emplacement de l'utilisateur actuel. -
Spécification du rayon : Réglez
radius_km
sur le rayon de recherche souhaité en kilomètres. -
Obtenir les emplacements à proximité : Appelez
get_users_within_radius
pour récupérer les instances de localisation dans un rayon spécifié. - Extraire les utilisateurs : Parcourez les instances d'emplacement pour collecter les objets utilisateur associés.
La mise en œuvre de la recherche de géolocalisation dans Django est une compétence précieuse pour les développeurs souhaitant créer des services basés sur la localisation. En comprenant la formule de Haversine, les développeurs peuvent créer des recherches efficaces basées sur la localisation.
Pour des fonctionnalités géographiques plus avancées, explorez GeoDjango et les bases de données spatiales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

La flexibilité de Python se reflète dans les systèmes de prise en charge et de type dynamique multi-paradigmes, tandis que la facilité d'utilisation provient d'une syntaxe simple et d'une bibliothèque standard riche. 1. Flexibilité: prend en charge la programmation orientée objet, fonctionnelle et procédurale, et les systèmes de type dynamique améliorent l'efficacité de développement. 2. Facilité d'utilisation: La grammaire est proche du langage naturel, la bibliothèque standard couvre un large éventail de fonctions et simplifie le processus de développement.

Python est très favorisé pour sa simplicité et son pouvoir, adaptés à tous les besoins des débutants aux développeurs avancés. Sa polyvalence se reflète dans: 1) Facile à apprendre et à utiliser, syntaxe simple; 2) Bibliothèques et cadres riches, tels que Numpy, Pandas, etc.; 3) Support multiplateforme, qui peut être exécuté sur une variété de systèmes d'exploitation; 4) Convient aux tâches de script et d'automatisation pour améliorer l'efficacité du travail.

Oui, apprenez Python en deux heures par jour. 1. Élaborer un plan d'étude raisonnable, 2. Sélectionnez les bonnes ressources d'apprentissage, 3. Consolider les connaissances apprises par la pratique. Ces étapes peuvent vous aider à maîtriser Python en peu de temps.

Python convient au développement rapide et au traitement des données, tandis que C convient à des performances élevées et à un contrôle sous-jacent. 1) Python est facile à utiliser, avec syntaxe concise, et convient à la science des données et au développement Web. 2) C a des performances élevées et un contrôle précis, et est souvent utilisé dans les jeux et la programmation système.

Le temps nécessaire pour apprendre le python varie d'une personne à l'autre, principalement influencé par l'expérience de programmation précédente, la motivation d'apprentissage, les ressources et les méthodes d'apprentissage et le rythme d'apprentissage. Fixez des objectifs d'apprentissage réalistes et apprenez mieux à travers des projets pratiques.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

Pour maximiser l'efficacité de l'apprentissage de Python dans un temps limité, vous pouvez utiliser les modules DateTime, Time et Schedule de Python. 1. Le module DateTime est utilisé pour enregistrer et planifier le temps d'apprentissage. 2. Le module de temps aide à définir l'étude et le temps de repos. 3. Le module de planification organise automatiquement des tâches d'apprentissage hebdomadaires.

Python excelle dans les jeux et le développement de l'interface graphique. 1) Le développement de jeux utilise Pygame, fournissant des fonctions de dessin, audio et d'autres fonctions, qui conviennent à la création de jeux 2D. 2) Le développement de l'interface graphique peut choisir Tkinter ou Pyqt. Tkinter est simple et facile à utiliser, PYQT a des fonctions riches et convient au développement professionnel.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP