Finished updating new pages

parent 065ce47b
from django import forms
from .models import Author, Books
class IndexCardForm(forms.Form):
name = forms.CharField(label='Full Name', max_length=100)
section = forms.CharField(label='CSCI40 Section', max_length=5)
age = forms.IntegerField(label='Current Age')
class BookForm(forms.ModelForm):
class Meta:
model = Books
fields = '__all__'
class AddBookForm(forms.Form):
title = forms.CharField(label='Title', max_length=100)
# author = forms.ForeignKey(Author, on_delete=forms.CASCADE)
publisher = forms.CharField(label='Publisher', max_length=100)
year_published = forms.IntegerField(label='Year Published')
ISBN = forms.IntegerField(label='ISBN')
blurb = forms.CharField(label='Blurb', max_length=200)
class AuthorForm(forms.ModelForm):
class Meta:
model = Author
fields = '__all__'
......@@ -3,29 +3,29 @@ from django.urls import reverse
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
age = models.IntegerField()
nationality = models.CharField(max_length=100)
bio = models.CharField(max_length=700)
first_name = models.CharField(max_length=50, default="")
last_name = models.CharField(max_length=30, default="")
age = models.IntegerField(default=0)
nationality = models.CharField(max_length=30, default="")
bio = models.TextField(max_length=700, default="")
def __str__(self):
return '{}, {}'.format(self.last_name, self.first_name)
return self.last_name
def get_absolute_url(self):
return reverse('bookshelf:author-details', kwargs={'pk': self.pk})
return reverse('author-details', kwargs={'pk': self.pk})
class Books(models.Model):
title = models.CharField(max_length=100)
title = models.CharField(max_length=50, default="")
author = models.ForeignKey(Author, on_delete=models.CASCADE)
publisher = models.CharField(max_length=100)
year_published = models.IntegerField(max_length=4)
ISBN = models.IntegerField(max_length=13)
blurb = models.CharField(max_length=200)
publisher = models.CharField(max_length=50, default="")
year_published = models.IntegerField(default=0)
ISBN = models.IntegerField(default=0)
blurb = models.TextField(max_length=200, default="")
def __str__(self):
return '{} by {}'.format(self.title, self.author)
return self.title
def get_absolute_url(self):
return reverse('bookshelf:book-details', kwargs={'pk': self.pk})
return reverse('book-details', kwargs={'pk': self.pk})
{% extends 'base.html' %}
{% load static %}
{% block title %} Add New Author {% endblock %}
{% block content %}
{{ form.non_field_errors }}
{% for field in form %}
{% if field.errors %}
<p> {{ field.label }} has the following errors:</p>
<ul>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
<form method = "post">
{% csrf_token %}
{% for field in form %}
{{field.label}}: {{field}}<br><br>
{% endfor %}
&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Add Author">
</form>
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% block title %} Add New Book {% endblock %}
{% block content %}
{{ form.non_field_errors }}
{% for field in form %}
{% if field.errors %}
<p>{{ field.label }} has the following errors:</p>
<p> {{ field.label }} has the following errors:</p>
<ul>
{% for error in field.errors %}
<li>{{ error }}</li>
......@@ -10,9 +13,11 @@
</ul>
{% endif %}
{% endfor %}
<form action="/books/add/" method="post">
<form method = "post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% for field in form %}
{{field.label}}: {{field}}<br><br>
{% endfor %}
&nbsp;<input type="submit" value="Add Book">
</form>
{% endblock %}
{% extends 'base.html' %}
{% load static%}
{% block title %}My Favorite Books{% endblock %}
{% load static %}
{% block title %} {{ object.first_name }} {{ object.last_name }} {% endblock %}
{% block content %}
<h1>{{ object.author }}</h1>
{{ object.first_name }} {{ object.last_name }}<br>
{{ object.nationality }}<br>
{{ object.bio }}<br>
<br>
Books by {{ object.first_name }} {{ objects.last_name }} I like:
<br>
{% for object in author.books_set.all %}
<a href="{{ object.get_absolute_url }}">{{ object }}<br></a>
{% endfor %}
<br>
<a href="/home">Home</a> <a href="/books">Books</a> <a href="/authors">Authors</a>
<h1>{{ object.first_name }} {{ object.last_name }}</h1>
<body>
{{ object.age }}<br>
{{ object.nationality }}<br>
{{ object.bio }}<br>
<a href="/bookshelf/authors/{{object.id}}/edit"><button>Edit Author</button></a><br><br>
Books by {{ object.first_name }} {{ object.last_name }} I love: <br>
{% for object in author.books_set.all %}
<li>
<a href="{{ object.get_absolute_url }}">{{ object.title }}</a>
</li>
{% endfor %}
</body>
<footer>
<br><br>
<a href="/bookshelf/home">Home</a>
<a href="/bookshelf/books">Books</a>
<a href="/bookshelf/authors">Authors
</footer>
{% endblock %}
{% extends 'base.html' %}
{% load static%}
{% block title %}My Favorite Books{% endblock %}
{% load static %}
{% block title %} {{ object.title }} {% endblock %}
{% block content %}
<h1>{{ object.title }}</h1>
<a href="/authors/{{ object.author.pk }}/details">{{ object.author}}</a>
<br>
{{ object.publisher }}<br>
{{ object.year_published }}<br>
{{ object.ISBN }}<br>
{{ object.blurb }}<br>
<a href="/home">Home</a> <a href="/books">Books</a> <a href="/authors">Authors</a>
<h1>{{ object.title }}</h1>
<body>
<a href="{{ object.author.get_absolute_url }}">
{{ object.author.first_name }} {{ object.author.last_name }}<br>
</a>
{{ object.publisher }}<br>
{{ object.year_published }}<br>
{{ object.ISBN }}<br>
{{ object.blurb }} <br><br>
<a href="/bookshelf/books/{{object.id}}/edit"><button>Edit Book</button></a>
</body>
<footer>
<br><br>
<a href="/bookshelf/home">Home</a>
<a href="/bookshelf/books">Books</a>
<a href="/bookshelf/authors">Authors
</footer>
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% block title %} Edit Author {% endblock %}
{% block content %}
{{ form.non_field_errors }}
{% for field in form %}
{% if field.errors %}
<p> {{ field.label }} has the following errors:</p>
<ul>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
<form method = "post">
{% csrf_token %}
{% for field in form %}
{{field.label}}: {{field}}<br><br>
{% endfor %}
&nbsp;<input type="submit" value="Save Changes">
</form>
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% block title %} Edit Book {% endblock %}
{% block content %}
{{ form.non_field_errors }}
{% for field in form %}
{% if field.errors %}
<p> {{ field.label }} has the following errors:</p>
<ul>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
<form method = "post">
{% csrf_token %}
{% for field in form %}
{{field.label}}: {{field}}<br><br>
{% endfor %}
&nbsp;<input type="submit" value="Save Changes">
</form>
{% endblock %}
......@@ -6,7 +6,7 @@
<h1>Welcome to Al's Database of
Favorite Books and Authors</h1>
<h3>I barely read books, and when I do, they are mostly Japanese Light Novels or Manga. But recently I have been into Webtoons!</h3>
<a href="/books">Books</a> <a href="/authors">Authors</a>
<a href="/bookshelf/books">Books</a> <a href="/bookshelf/authors">Authors</a><br>
<br>
<a href="/books/add">Add Book</a> <a href="/authors/add">Add Author</a>
<a href="/bookshelf/books/add">Add Book</a> <a href = "/bookshelf/authors/add">Add Author</a>
{% endblock %}
\ No newline at end of file
from django.urls import path
from .import views
from .views import (
BooksView, BooksDetailsView,
AuthorsView, AuthorsDetailsView,
index_card_view, add_book_view
)
HomepageView, BooksListView, BooksDetailView,
AuthorsListView, AuthorsDetailView, BookCreateView,
BookUpdateView, AuthorCreateView, AuthorUpdateView
)
urlpatterns = [
path('home/', views.home_view, name='home'),
path('books/', BooksView.as_view(), name='books-list'),
path('books/<int:pk>/details', BooksDetailsView.as_view(), name='book-details'),
path('authors/', AuthorsView.as_view(), name='authors-list'),
path('authors/<int:pk>/details', AuthorsDetailsView.as_view(), name='author-details'),
path('index_card', index_card_view, name='index_card'),
path('books/add/', add_book_view, name='add-book'),
path('home/', HomepageView, name='home'),
path('books/', BooksListView.as_view(), name='books-list'),
path('books/<int:pk>/details/', BooksDetailView.as_view(), name='book-details'),
path('authors/', AuthorsListView.as_view(), name='authors-list'),
path('authors/<int:pk>/details/', AuthorsDetailView.as_view(), name='author-details'),
path('books/add/', BookCreateView.as_view(), name='add-book'),
path('authors/add/', AuthorCreateView.as_view(), name='add-author'),
path('books/<pk>/edit/', BookUpdateView.as_view(), name='edit-book'),
path('authors/<pk>/edit/', AuthorUpdateView.as_view(), name='edit-author'),
]
app_name = "bookshelf"
from django.forms import NameForm, HttpResponse
from django.shortcuts import render
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from .models import Books, Author
from .forms import IndexCardForm, AddBookForm
from django.views.generic.edit import CreateView, UpdateView
from .models import Author, Books
def home_view(request):
def HomepageView(request):
return render(request, 'bookshelf/home.html')
class BooksView(ListView):
class BookCreateView(CreateView):
model = Books
fields = '__all__'
template_name = 'bookshelf/add-book.html'
class AuthorCreateView(CreateView):
model = Author
fields = '__all__'
template_name = 'bookshelf/add-author.html'
class BookUpdateView(UpdateView):
model = Books
fields = '__all__'
template_name = 'bookshelf/edit-book.html'
class AuthorUpdateView(UpdateView):
model = Author
fields = '__all__'
template_name = 'bookshelf/edit-author.html'
class BooksListView(ListView):
model = Books
template_name = 'bookshelf/books.html'
class BooksDetailsView(DetailView):
class BooksDetailView(DetailView):
model = Books
template_name = 'bookshelf/book_details.html'
template_name = 'bookshelf/books_details.html'
class AuthorsView(ListView):
class AuthorsListView(ListView):
model = Author
template_name = 'bookshelf/authors.html'
class AuthorsDetailsView(DetailView):
class AuthorsDetailView(DetailView):
model = Author
template_name = 'bookshelf/author_details.html'
def index_card_view(request):
# Checking for POST request
if request.method == 'POST':
# Creating a Form object
form = NameForm(request.POST)
# Checking if the inputs are valid
if form.is_valid():
return HttpResponse(
'Hello {} from Section {}'.format(
# Getting data from our form that have been validated
form.cleaned_data['name'],
form.cleanded_data['section']
)
)
else:
# returning the same form object in the context allows
# for rendering the errors that are in the form object
return render(request, 'index.html', {'form': form})
else:
form = IndexCardForm()
return render(request, 'index.html', {'form': form})
def add_book_view(request):
if request.method == 'POST':
form = NameForm(request.POST)
if form.is_valid():
return HttpResponse(
'Author: {}, Publisher: {}, Year Published: {}, ISBN: {}, Blurb: {}'.format(
form.cleaned_data['author'],
form.cleaned_data['publisher'],
form.cleaned_data['year_published'],
form.cleaned_data['ISBN'],
form.cleaned_data['blurb'],
)
)
else:
return render(request, 'index.html', {'form': form})
else:
form = AddBookForm()
return render(request, 'index.html', {'form': form})
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment