Commit bfcb336e authored by Eldon Dagdag's avatar Eldon Dagdag

Created pages for Home, Books, Authors, & Details

parent ee782a7a
from django.db import models from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator from django.core.validators import MinValueValidator, MaxValueValidator
from django.urls import reverse
class Author(models.Model): class Author(models.Model):
first_name = models.CharField(max_length=255, default='') first_name = models.CharField(max_length=255, default='')
...@@ -11,9 +12,12 @@ class Author(models.Model): ...@@ -11,9 +12,12 @@ class Author(models.Model):
def __str__(self): def __str__(self):
return '{} {}'.format(self.first_name, self.last_name) return '{} {}'.format(self.first_name, self.last_name)
def get_absolute_url(self):
return reverse('bookshelf:author-details', kwargs={'pk':self.pk})
class Book(models.Model): class Book(models.Model):
title = models.CharField(max_length=255, default='') title = models.CharField(max_length=255, default='')
author = models.ForeignKey(Author, on_delete=models.CASCADE) author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
publisher = models.CharField(max_length=255, default='') publisher = models.CharField(max_length=255, default='')
year_published = models.PositiveIntegerField() year_published = models.PositiveIntegerField()
ISBN = models.PositiveBigIntegerField(validators=[MinValueValidator(1000000000000), MaxValueValidator(9999999999999)]) ISBN = models.PositiveBigIntegerField(validators=[MinValueValidator(1000000000000), MaxValueValidator(9999999999999)])
...@@ -22,3 +26,5 @@ class Book(models.Model): ...@@ -22,3 +26,5 @@ class Book(models.Model):
def __str__(self): def __str__(self):
return '{} by {}'.format(self.title, self.author) return '{} by {}'.format(self.title, self.author)
def get_absolute_url(self):
return reverse('bookshelf:book-details', kwargs={'pk':self.pk})
{% extends 'base.html' %}
{% load static %}
{% block title %} {{ object.first_name }} {{ object.last_name }}{% endblock %}
{% block content %}
<html>
<h1>{{ object.first_name }} {{ object.last_name }}</h1>
<body>
<h3>Age: {{ object.age }}</h3>
<h3>Nationality: {{ object.nationality }}</h3>
<h3>Biography: {{ object.bio }}</h3>
<h2>Books by {{ object.first_name }} {{ object.last_name }} I love:</h2>
{% for book in object.books.all %}
<li><a href={{ book.get_absolute_url }}>{{ book.title }}</a></li>
{% endfor %}
</body>
<br>
<a href="/bookshelf/home/">Home</a>
<a href="/bookshelf/books/">Books</a>
<a href="/bookshelf/authors/">Authors</a>
</html>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load static %}
{% block title %}My Favorite Authors{% endblock %}
{% block content %}
<html>
<h1>Eldon's Favorite Authors:</h1>
<body>
{% for object in object_list %}
<li>
<a href="{{ object.get_absolute_url }}">
{{ object.first_name }} {{ object.last_name }}
</a>
</li>
{% endfor %}
</body>
<br>
<a href="/bookshelf/home/">Home</a>
<a href="/bookshelf/books/">Books</a>
</html>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load static %}
{% block title %} {{ object.title }}{% endblock %}
{% block content %}
<html>
<body>
<h1>{{ object.title }}</h1>
<h2>by <a href="{{ object.author.get_absolute_url }}">{{ object.author }}</a></h2>
<h3>Published by {{ object.publisher }}</h3>
<h3>Published in {{ object.year_published }}</h3>
<h3>ISBN: {{ object.ISBN }}</h3>
<h3>"{{ object.blurb }}"</h3>
</body>
<br>
<a href="/bookshelf/home/">Home</a>
<a href="/bookshelf/books/">Books</a>
<a href="/bookshelf/authors/">Authors</a>
</html>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load static %}
{% block title %}My Favorite Books{% endblock %}
{% block content %}
<html>
<h1>Eldon's Favorite Books:</h1>
<body>
{% for object in object_list %}
<li>
<a href="{{ object.get_absolute_url }}">
{{ object.title }}
</a>
</li>
{% endfor %}
</body>
<br>
<a href="/bookshelf/home/">Home</a>
<a href="/bookshelf/authors/">Authors</a>
</html>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load static %}
{% block title %}My Favorite Books & Authors{% endblock %}
{% block content %}
<h1>Welcome to Eldon's Database of Favorite Books and Authors!</h1>
<h3>Vibes only here.</h3>
<br>
<a href="/bookshelf/books/">Books</a>
<a href="/bookshelf/authors/">Authors</a>
{% endblock %}
\ No newline at end of file
from django.urls import path from django.urls import path
from .views import index from .views import index_view, home, BookListView, BookDetailView, AuthorListView, AuthorDetailView
urlpatterns = [ urlpatterns = [
path('', index, name='index') path('home/', home, name='home'),
path('books/', BookListView.as_view(), name='books'),
path('books/<int:pk>/details/', BookDetailView.as_view(), name='book-details'),
path('authors/', AuthorListView.as_view(), name='authors'),
path('authors/<int:pk>/details/', AuthorDetailView.as_view(), name='author-details'),
path('', index_view, name='index'),
] ]
app_name = "bookshelf" app_name = "bookshelf"
\ No newline at end of file
from django.shortcuts import render from django.shortcuts import render
from django.http import HttpResponse from django.http import HttpResponse
from django.views import View
from django.views.generic import ListView, DetailView
def index(request): from .models import Author, Book
return HttpResponse('Hello World!')
\ No newline at end of file def index_view(request):
return HttpResponse("yes")
def home(request):
return render(request, 'bookshelf/home.html', {'name': 'home'})
class BookListView(ListView):
model = Book
template_name = 'bookshelf/books.html'
class BookDetailView(DetailView):
model = Book
template_name = 'bookshelf/book_details.html'
class AuthorListView(ListView):
model = Author
template_name = 'bookshelf/authors.html'
class AuthorDetailView(DetailView):
model = Author
template_name = 'bookshelf/author_details.html'
# def index_view(request):
# return render(request, 'home.html', {'name': 'home'})
# class HomepageView(View):
# def get(self, request):
# return render(request, 'home.html', {'name': 'home'})
\ No newline at end of file
...@@ -59,7 +59,7 @@ ROOT_URLCONF = 'eldondagdag_reading.urls' ...@@ -59,7 +59,7 @@ ROOT_URLCONF = 'eldondagdag_reading.urls'
TEMPLATES = [ TEMPLATES = [
{ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], 'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [
......
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width-device-width,initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>{% block title %}{% endblock %}</title>
{% block styles %}{% endblock %}
</head>
<body>
<div id="content">
{% block content %}{% endblock %}
</div>
{% block scripts %}{% endblock %}
</body>
</html>
\ No newline at end of file
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