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))