基于django的图书管理系统中的图书展示及分类功能的代码
时间: 2024-03-27 11:38:03 浏览: 6
以下是一个基于 Django 的图书管理系统中的图书展示及分类功能的代码示例:
models.py:
```python
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
def __str__(self):
return self.title
```
views.py:
```python
from django.shortcuts import render
from .models import Book, Category
def book_list(request):
categories = Category.objects.all()
books = Book.objects.all()
return render(request, 'book_list.html', {'books': books, 'categories': categories})
def book_list_by_category(request, category_id):
categories = Category.objects.all()
selected_category = Category.objects.get(id=category_id)
books = Book.objects.filter(category=selected_category)
return render(request, 'book_list.html', {'books': books, 'categories': categories, 'selected_category': selected_category})
```
urls.py:
```python
from django.urls import path
from .views import book_list, book_list_by_category
urlpatterns = [
path('', book_list, name='book_list'),
path('category/<int:category_id>/', book_list_by_category, name='book_list_by_category'),
]
```
templates/book_list.html:
```html
{% extends 'base.html' %}
{% block content %}
<h1>Books</h1>
<nav>
<ul class="category-list">
<li class="{% if not selected_category %}active{% endif %}">
<a href="{% url 'book_list' %}">All</a>
</li>
{% for category in categories %}
<li class="{% if selected_category == category %}active{% endif %}">
<a href="{% url 'book_list_by_category' category.id %}">{{ category.name }}</a>
</li>
{% endfor %}
</ul>
</nav>
<ul class="book-list">
{% for book in books %}
<li class="book-list-item">
<h2>{{ book.title }}</h2>
<p>Author: {{ book.author }}</p>
<p>Category: {{ book.category }}</p>
</li>
{% empty %}
<li>No books found.</li>
{% endfor %}
</ul>
{% endblock %}
```
这段代码实现了一个简单的图书管理系统,可以展示所有图书,并按照分类展示。在页面上,可以通过点击分类链接来筛选图书。这个示例中只展示了图书的名称、作者和分类信息,你可以根据自己的需求进行扩展。