Как удалить объекты/посты из базы данных при закрытии окна/вкладки в Django
Я хочу удалять объекты из базы данных при закрытии окна. В принципе, причина, по которой я хочу это сделать, заключается в том, что каждый раз, когда пользователь добавляет какой-либо город (это погодное приложение, где вы можете ввести название города и получить данные о погоде) для поиска погоды в городе, он сохраняет информацию о городе в моей базе данных Sqlite навсегда. и показывает погоду этого города другим пользователям также.
Чего я не хочу. Итак, в основном я хочу удалить данные других пользователей и не хочу сохранять их в своей базе данных навсегда и показывать другому пользователю те же данные (которые ищет другой пользователь). Что я могу сделать?
Любая помощь будет принята с благодарностью.
Views.py
from django.shortcuts import redirect, render, redirect
from .models import City
from .forms import CityForm
import math
def home(request):
api_id = 'http://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid={appid}'
err_msg = ''
message = ''
message_class = ''
if request.method == 'POST':
form = CityForm(request.POST)
if form.is_valid():
new_city = form.cleaned_data['name']
existing_city_count = City.objects.filter(name=new_city).count()
if existing_city_count == 0:
r = requests.get(api_id.format(new_city)).json()
print(r)
if r['cod'] == 200:
form.save()
else:
err_msg = 'You City is Belongs to Mars ig. City Does not exist in the world'
print(err_msg)
else:
err_msg = 'City Already Exists in the DataBase'
if err_msg:
message = err_msg
message_class='is-danger'
else:
message = 'City Added Successfully!'
message_class = 'is-success'
cities = City.objects.all()
form = CityForm()
weather_data = []
for city in cities:
r = requests.get(api_id.format(city)).json()
city_weather = {
'city':city.name,
'temperature':math.ceil(r['main']['temp']),
'humidity':r['main']['humidity'],
'wind':math.ceil(r['wind']['speed']),
'description':r['weather'][0]['description'],
'icon': r['weather'][0]['icon'],
}
weather_data.append(city_weather)
context = {
'weather_data':weather_data,
'form':form,
'message':message,
'message_class':message_class
}
return render(request,'Weather.html', context)
def delete_city(request, city_name):
City.objects.get(name=city_name).delete()
return redirect('home')
models.py
from django.db import models
class City(models.Model):
name = models.CharField(max_length=25)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = 'cities'
forms.py
from django.forms import ModelForm ,TextInput
from .models import City
class CityForm(ModelForm):
class Meta:
model = City
fields = ['name']
widgets = {'name' : TextInput(attrs={'class':'input','Placeholder':'City Name'})}
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home , name='home'),
path('delete/<city_name>/',views.delete_city, name="delete_city")
]