Add addbook page with get request implementation

parent 76a8436a
from django import forms
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 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)
{% 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 action="/books/add/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% endblock %}
\ No newline at end of file
......@@ -5,6 +5,8 @@
{% block content %}
<h1>Welcome to Al's Database of
Favorite Books and Authors</h1>
<h3>I barel read books, and when I do, they are mostly Japanese Light Novels or Manga. But recently I have been into Webtoons!</h3>
<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>
<br>
<a href="/books/add">Add Book</a> <a href="/authors/add">Add Author</a>
{% endblock %}
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
......@@ -2,7 +2,8 @@ from django.urls import path
from .import views
from .views import (
BooksView, BooksDetailsView,
AuthorsView, AuthorsDetailsView
AuthorsView, AuthorsDetailsView,
index_card_view, add_book_view
)
urlpatterns = [
......@@ -11,6 +12,9 @@ urlpatterns = [
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'),
]
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
def home_view(request):
......@@ -26,3 +28,48 @@ class AuthorsView(ListView):
class AuthorsDetailsView(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