Solution of 06

This commit is contained in:
Sally Zeitler 2018-12-12 20:14:16 +01:00
parent fccc0f39d6
commit b4ac907a6a
7 changed files with 54 additions and 5 deletions

3
.gitignore vendored
View File

@ -82,9 +82,12 @@ target/
*.pyc *.pyc
**__pycache__/ **__pycache__/
local_settings.py local_settings.py
db.sqlite3
.env .env
**/db.sqlite3 **/db.sqlite3
# PyCharm # PyCharm
**/.idea/ **/.idea/

View File

@ -106,7 +106,7 @@ AUTH_PASSWORD_VALIDATORS = [
# Internationalization # Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/ # https://docs.djangoproject.com/en/2.1/topics/i18n/
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'de-de'
TIME_ZONE = 'UTC' TIME_ZONE = 'UTC'

9
posts/forms.py Normal file
View File

@ -0,0 +1,9 @@
from django import forms
import datetime
class NoticeForm(forms.Form):
date_formats = ['%d.%m.%Y', '%d.%m.%y']
title = forms.CharField(label='Titel', max_length=80)
text = forms.CharField(label='Text', max_length=400)
start = forms.DateField(label='Von', input_formats=date_formats, initial=datetime.date.today)
end = forms.DateField(label='Bis', input_formats=date_formats, initial=datetime.date.today)

View File

@ -3,6 +3,9 @@ from django.urls import path, re_path
urlpatterns = [ urlpatterns = [
# use re_path for regex (.*) - this regex accepts anything - see https://docs.python.org/3/library/re.html for more # use re_path for regex (.*) - this regex accepts anything - see https://docs.python.org/3/library/re.html for more
path('', views.home, name=''), path('', views.home, name='index'),
re_path('(?P<value>.*)/$', views.home, name='textausgabe') re_path('delete/(?P<value>\d+)/$', views.delete, name='delete'),
re_path('(?P<value>.*)/$', views.home, name='textausgabe'),
path('new', views.new, name='new'),
# only accept numbers ^[0-9]*$
] ]

View File

@ -1,7 +1,9 @@
from django.shortcuts import render from django.shortcuts import render, redirect
from datetime import timedelta from datetime import timedelta
from django.utils import timezone from django.utils import timezone
from posts.models import Notice from posts.models import Notice
from posts.forms import NoticeForm
from django.http import HttpResponse
# Create your views here. # Create your views here.
@ -18,3 +20,21 @@ def home(request, value=""):
"notices": display_notices "notices": display_notices
} }
return render(request, 'index.html', context) return render(request, 'index.html', context)
def new(request):
if request.method == "POST":
form = NoticeForm(request.POST)
if form.is_valid():
newNotice = Notice(notice_title=form.cleaned_data['title'],
notice_text=form.cleaned_data['text'],
pub_start=form.cleaned_data['start'],
pub_end=form.cleaned_data['end'])
newNotice.save()
return redirect('index')
context = {'form': NoticeForm()}
return render(request, 'edit.html', context)
def delete(request, value):
notice = Notice.objects.get(id = value)
notice.delete()
return redirect('index')

12
templates/edit.html Normal file
View File

@ -0,0 +1,12 @@
{% extends "base.html" %}
{% block title %} {{ title }} {% endblock title %}
{% block content %}
<h1>Neue Nachricht</h1>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Speichern</button>
</form>
{% endblock content %}

View File

@ -7,6 +7,8 @@
<div class="jumbotron"> <div class="jumbotron">
<h1 class="display-6">{{ notice.notice_title }}</h1> <h1 class="display-6">{{ notice.notice_title }}</h1>
<p class="lead">{{notice.notice_text}}</p> <p class="lead">{{notice.notice_text}}</p>
<p><a href="{% url 'delete' notice.id %}" class="btn btn-info" role="button">Nachricht löschen</a></p>
</div> </div>
{% endfor %} {% endfor %}
<p><a href="{% url 'new' %}" class="btn btn-info" role="button">Neue Nachricht</a></p>
{% endblock content %} {% endblock content %}