Das Speichern in der Datenbank funktioniert mit fetch. Allerdings muss die eindeutige Zuordnung durch Primary Key in Address und allen anderen noch korrigiert werden.
parent
b3c3774f35
commit
45396364bf
22 changed files with 490 additions and 46 deletions
@ -0,0 +1,43 @@ |
||||
|
||||
const test = () => console.log("Hallo Welten!"); |
||||
|
||||
function convertToJsonDict(form) { |
||||
|
||||
let formData = {}; |
||||
for (let i = 0; i < form.elements.length; i++) { |
||||
let element = form.elements[i]; |
||||
if (element.type !== "submit" && element.type !== "button" && |
||||
element.name !== "csrfmiddlewaretoken") { |
||||
formData[element.name] = element.value; |
||||
} |
||||
} |
||||
return formData; |
||||
} |
||||
|
||||
const saveAddress = (htmlform) => { |
||||
|
||||
let headers = { |
||||
'X-Requested-With': 'XMLHttpRequest', |
||||
'Content-Type': 'application/json', |
||||
'X-CSRFToken': document.querySelector('[name=csrfmiddlewaretoken]').value |
||||
} |
||||
console.log("!!!!"); |
||||
console.log("Änderung: ",htmlform); |
||||
|
||||
let formName = htmlform.getAttribute("name").slice(4); |
||||
//console.log("Formname: ",formName);
|
||||
let jsonFormDict = convertToJsonDict(htmlform) |
||||
console.log("JSONDict: ",jsonFormDict) |
||||
let bodyDict = {"modelName": formName} |
||||
bodyDict['data'] = convertToJsonDict(htmlform) |
||||
console.log("bodyDict ",bodyDict) |
||||
let body = JSON.stringify(bodyDict) |
||||
console.log("Body: ",body) |
||||
let response = fetch('/save_planungsparameter/', { |
||||
method: 'POST', |
||||
headers: headers, |
||||
body: body |
||||
} |
||||
) |
||||
} |
||||
// https://www.parvatiandsons.in/resource/how-to-add-onchange-event-in-django-python/
|
||||
@ -0,0 +1,18 @@ |
||||
{% extends 'ugssim/ugssim.html' %} |
||||
|
||||
{% block title %}Login{% endblock %} |
||||
|
||||
{% block content %} |
||||
<h2>Log In</h2> |
||||
<form method="post"> |
||||
{% csrf_token %} |
||||
{{ form }} |
||||
<button type="submit">Login</button> |
||||
</form> |
||||
Anleitung dazu |
||||
<a href="https://learndjango.com/tutorials/django-login-and-logout-tutorial" target="_blank ">https://learndjango.com/tutorials/django-login-and-logout-tutorial</a> |
||||
{% endblock %} |
||||
|
||||
<!-- |
||||
https://learndjango.com/tutorials/django-login-and-logout-tutorial |
||||
--> |
||||
@ -0,0 +1,65 @@ |
||||
# Generated by Django 4.1.2 on 2024-09-10 07:02 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
('ugssim', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='AllgemeinesData', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('currency', models.CharField(max_length=3)), |
||||
('years', models.IntegerField()), |
||||
('startPhase', models.IntegerField()), |
||||
('planingPeriods', models.IntegerField()), |
||||
], |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='address', |
||||
name='vorname', |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='first_name', |
||||
field=models.CharField(max_length=255, null=True, verbose_name='Vorname'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='user', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='new_spending', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='address', |
||||
name='geburtstag', |
||||
field=models.DateField(null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='address', |
||||
name='hausnummer', |
||||
field=models.CharField(max_length=10, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='address', |
||||
name='nachname', |
||||
field=models.CharField(max_length=255, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='address', |
||||
name='postleitzahl', |
||||
field=models.CharField(max_length=5, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='address', |
||||
name='street', |
||||
field=models.CharField(max_length=255, null=True, verbose_name='Straße'), |
||||
), |
||||
] |
||||
@ -0,0 +1,54 @@ |
||||
# Generated by Django 4.1.2 on 2024-09-10 10:22 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('ugssim', '0002_allgemeinesdata_remove_address_vorname_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='address', |
||||
name='geburtstag', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='address', |
||||
name='hausnummer', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='address', |
||||
name='nachname', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='address', |
||||
name='postleitzahl', |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='birthday', |
||||
field=models.DateField(null=True, verbose_name='Geburtstag'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='city', |
||||
field=models.CharField(max_length=100, null=True, verbose_name='Stadt'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='number', |
||||
field=models.CharField(max_length=10, null=True, verbose_name='Hausnummer'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='postcode', |
||||
field=models.CharField(max_length=5, null=True, verbose_name='Postleitzahl'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='address', |
||||
name='surname', |
||||
field=models.CharField(max_length=255, null=True, verbose_name='Nachname'), |
||||
), |
||||
] |
||||
@ -0,0 +1,22 @@ |
||||
# Generated by Django 4.1.2 on 2024-09-12 14:48 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
('ugssim', '0003_remove_address_geburtstag_remove_address_hausnummer_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='summary', |
||||
name='user', |
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='user_summary', to=settings.AUTH_USER_MODEL), |
||||
preserve_default=False, |
||||
), |
||||
] |
||||
@ -0,0 +1,16 @@ |
||||
{{ myform }} |
||||
{% for field in myform %} |
||||
<div class="form-group"> |
||||
|
||||
{% if field.html_name == "user" %} |
||||
<input type="hidden" name='user' value="{{user.id}}"> |
||||
{% else %} |
||||
{% if field.html_name == "description" %} |
||||
{% else %} |
||||
<label for="{{ field.id_for_label }}">{{ field.label }}</label> |
||||
{{field }} |
||||
{% endif %} |
||||
{% endif %} |
||||
</div> |
||||
{% endfor %} |
||||
<button type="submit" class="btn btn-primary" name="{{ modelname }}Button" onclick="test()">Submit</button> |
||||
@ -0,0 +1,28 @@ |
||||
{% extends 'ugssim/ugssim.html' %} |
||||
{% load read_dictonary %} |
||||
{% block content %} |
||||
<form method="post" class="form-group" action="/pp2/"> |
||||
{% csrf_token %} |
||||
<div class="accordion" id="accordionPlanning"> |
||||
<div class="accordion-item"> |
||||
<h2 class="accordion-header"> |
||||
<button class="accordion-button" type="button" data-bs-toggle="collapse" |
||||
data-bs-target="#collapseUserData" |
||||
aria-expanded="true" aria-controls="collapseUserData"> |
||||
Nutzerdaten |
||||
</button> |
||||
</h2> |
||||
</div> |
||||
<div id="collapseUserDAta" class="accordion-collapse collapse show" |
||||
data-bs-parent="#accordionPlanning"> |
||||
<div class="accordion-body"> |
||||
<div class="form-group"> |
||||
<label> Vorname</label> |
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
{% endblock content %} |
||||
@ -1,5 +1,6 @@ |
||||
{% load static %} |
||||
<div class="clearfix"> |
||||
<h1>Excellence in Entrepreneurship |
||||
<small>{{ user.firstname }}</small> |
||||
<img src="{% static 'img/LogoUGS_rgb.png' %}" class="bd-placeholder-img rounded float-end mr-2" height="50" alt="UGS Logo"></h1> |
||||
</div> |
||||
@ -0,0 +1,10 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Title</title> |
||||
</head> |
||||
<body> |
||||
|
||||
</body> |
||||
</html> |
||||
Loading…
Reference in new issue