Postup:
from django.http import HttpResponse def index(request): return HttpResponse("Hello")
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
... from django.urls import path, include urlpatterns = [ ... path('rajon/', include('rajon.urls')), ]
class Zadani(models.Model): stanovisko_y = models.FloatField() stanovisko_x = models.FloatField() orientace_y = models.FloatField() orientace_x = models.FloatField() smer_orientace = models.FloatField() smer_bod = models.FloatField() delka = models.FloatField() class Meta: verbose_name_plural = "Zadání" class Vysledek(models.Model): souradnice_y = models.FloatField() souradnice_x = models.FloatField() cas = models.DateTimeField() zadani = models.ForeignKey(Zadani, on_delete=models.CASCADE) class Meta: verbose_name_plural = "Výsledky"
... INSTALLED_APPS = [ 'rajon.apps.RajonConfig', ...
from .models import Zadani, Vysledek admin.site.register(Zadani) admin.site.register(Vysledek)
from .models import Zadani, Vysledek class ReadOnlyAdmin(admin.ModelAdmin): readonly_fields = [] def get_readonly_fields(self, request, obj=None): return list(self.readonly_fields) + \ [field.name for field in obj._meta.fields] + \ [field.name for field in obj._meta.many_to_many] def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False def has_change_permission(self, request, obj=None): return False admin.site.register(Zadani) admin.site.register(Vysledek, ReadOnlyAdmin)
import math def rajon(stanovisko_y, stanovisko_x, orientace_y, orientace_x, smer_orientace, smer_bod, delka): dy_ab = orientace_y - stanovisko_y # zmena zde dx_ab = orientace_x - stanovisko_x # zmena zde smernik_ori = math.atan2(dy_ab, dx_ab) rozdil_uhlu = smer_bod * math.pi / 200 - smer_orientace * math.pi / 200 smernik_cil = smernik_ori + rozdil_uhlu souradnice_x = stanovisko_x + delka * math.cos(smernik_cil) # zmena zde souradnice_y = stanovisko_y + delka * math.sin(smernik_cil) # zmena zde return souradnice_y, souradnice_x
class Zadani: ... def save(self, *args, **kwargs): from .vypocet import rajon from django.utils import timezone super().save(*args, **kwargs) vysledek = rajon(self.stanovisko_y, self.stanovisko_x, self.orientace_y, self.orientace_x, self.smer_orientace, self.smer_bod, self.delka) v = Vysledek(souradnice_y=vysledek[0], souradnice_x=vysledek[1], cas=timezone.now(), zadani_id=self.id) v.save() def delete(self, *args, **kwargs): super().delete(*args, **kwargs)
... from .models import Vysledek def index(request): pocet = Vysledek.objects.count() return HttpResponse(f"Počet výpočtených úloh: {pocet}")
Výsledky: {% if vysledky %} <ul> {% for vysledek in vysledky %} <li>{{ vysledek.id }}: ({{ vysledek.souradnice_y }}, {{vysledek.souradnice_x}}) (čas: {{ vysledek.cas }})</li> {% endfor %} </ul> {% else %} <p>Žádné...</p> {% endif %}
... from django.template import loader def index(request): vysledky = Vysledek.objects.order_by() template = loader.get_template('rajon/index.html') context = { 'vysledky': vysledky, } return HttpResponse(template.render(context, request))