From f49f6216ef5c5d88974955beef791dd4dfe1c3c9 Mon Sep 17 00:00:00 2001 From: Michael Bergbauer Date: Fri, 13 Jun 2025 21:56:19 +0200 Subject: [PATCH] Adding form for creating new Person entries --- member/forms.py | 12 +++++++++++ member/static/icons/heroicons/plus.svg | 5 +++++ member/static/member/css/styles.css | 28 ++++++++++++++++++++++++++ member/templates/memberlist.html | 27 ++++++++++++++++++------- member/templates/person_form.html | 27 +++++++++++++++++++++++++ member/urls.py | 1 + member/views.py | 12 +++++++++++ 7 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 member/forms.py create mode 100644 member/static/icons/heroicons/plus.svg create mode 100644 member/templates/person_form.html diff --git a/member/forms.py b/member/forms.py new file mode 100644 index 0000000..51162e2 --- /dev/null +++ b/member/forms.py @@ -0,0 +1,12 @@ +# forms.py + +from django import forms +from .models import Person + +class PersonForm(forms.ModelForm): + class Meta: + model = Person + fields = ['vorname', 'nachname', 'geburtsdatum', 'aktiv'] + widgets = { + 'geburtsdatum': forms.DateInput(attrs={'type': 'date'}), + } diff --git a/member/static/icons/heroicons/plus.svg b/member/static/icons/heroicons/plus.svg new file mode 100644 index 0000000..44bf544 --- /dev/null +++ b/member/static/icons/heroicons/plus.svg @@ -0,0 +1,5 @@ + + + + diff --git a/member/static/member/css/styles.css b/member/static/member/css/styles.css index 009b699..3fd8c2f 100644 --- a/member/static/member/css/styles.css +++ b/member/static/member/css/styles.css @@ -129,3 +129,31 @@ body { background-color: #d63031; } +.icon { + width: 20px; + height: 20px; + vertical-align: middle; + margin-right: 6px; + filter: invert(90%); /* für helle SVGs in dunklem Hintergrund */ +} + +.form-group { + display: grid; + flex-direction: column; + margin-bottom: 16px; +} + +.form-group label { + margin-bottom: 4px; + font-weight: bold; +} + +.form-group input, +.form-group select { + padding: 8px; + border: 1px solid #444; + border-radius: 4px; + background-color: #1e1e1e; + color: #f1f1f1; + font-size: 1rem; +} diff --git a/member/templates/memberlist.html b/member/templates/memberlist.html index 85367be..b7da126 100644 --- a/member/templates/memberlist.html +++ b/member/templates/memberlist.html @@ -1,4 +1,5 @@ {% extends "master.html" %} +{% load static %} {% block title %} List of all persons @@ -7,13 +8,25 @@ {% block content %}

Members

- + Neu Neu + + + + + + + + + + {% for x in mymembers %} + + + + + + {% endfor %} + +
NameAktivAktionen
{{ x.nachname }} {{ x.vorname}}
{% endblock %} diff --git a/member/templates/person_form.html b/member/templates/person_form.html new file mode 100644 index 0000000..7ab4b2e --- /dev/null +++ b/member/templates/person_form.html @@ -0,0 +1,27 @@ +{% extends "master.html" %} +{% block content %} +
+

{{ action }} Person

+
+ {% csrf_token %} +
+ + {{form.vorname}} +
+
+ + {{ form.nachname}} +
+
+ + {{ form.geburtsdatum}} +
+
+ + {{ form.aktiv}} +
+ + Abbrechen +
+
+{% endblock %} diff --git a/member/urls.py b/member/urls.py index 053995d..3cbfdcb 100644 --- a/member/urls.py +++ b/member/urls.py @@ -4,4 +4,5 @@ from . import views urlpatterns = [ path('members/', views.members, name='members'), path('members/details/', views.details, name="details"), + path('members/create/', views.create, name="create"), ] diff --git a/member/views.py b/member/views.py index 580930c..23496a6 100644 --- a/member/views.py +++ b/member/views.py @@ -1,6 +1,8 @@ from django.http import HttpResponse +from django.shortcuts import render, redirect, get_object_or_404 from django.template import loader from .models import Person +from .forms import PersonForm def members(request): mymembers=Person.objects.all().values() @@ -17,3 +19,13 @@ def details(request, id): 'mymember': mymember } return HttpResponse(template.render(context, request)) + +def create(request): + if request.method == "POST": + form = PersonForm(request.POST) + if form.is_valid(): + form.save() + return redirect('members') + else: + form = PersonForm() + return render(request, "person_form.html", {'form': form, 'action': "Neu anlegen"})