Django CreateView视图

CreateView是Django提供的一个基于类的视图,用于处理创建新对象的操作。它可以帮助你轻松地创建一个表单页面,用户可以通过这个页面创建新的对象。

1,添加视图

Test/app3/views.py

复制代码
from django.shortcuts import render

# Create your views here.
from .models import Book

from django.views.generic import ListView
class BookListView(ListView):
    model = Book
    context_object_name = 'books'
    template_name = 'books/book_list.html'
    paginate_by = 10 # 设置展示页数数据


from django.views.generic import DetailView
class BookDetailView(DetailView):
    model = Book
    context_object_name = 'book'
    template_name = 'books/book_detail.html'


from django.views.generic.edit import CreateView
class BookCreateView(CreateView):
    model = Book
    template_name = 'books/book_form.html'
    fields = ['title', 'author', 'publication_date']

2,添加路由地址

Test/app3/urls.py

复制代码
from django.urls import path
from . import views

from .views import BookListView
from .views import BookDetailView
from .views import BookCreateView

urlpatterns = [
    path('books/', BookListView.as_view(), name='book_list'),
    path('books/<int:pk>/', BookDetailView.as_view(), name='book_detail'),
    path('books/new/', BookCreateView.as_view(), name='book_new'),
]

3,添加html代码

Test/templates/books/book_form.html

复制代码
<!-- 在templates/books/book_form.html中 -->
<!DOCTYPE html>
<html>
<head>
    <title>New book</title>
</head>
<body>
    <h1>New book</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Save</button>
    </form>
</body>
</html>

4,访问页面

http://127.0.0.1:8000/app3/books/new/

这个错误表明Django在尝试重定向到新创建的对象的详情页面时找不到要去的URL。

实际上我们的数据已经成功保存下来了

解决保存后页面访问页面问题可参考:

Django 解决No URL to redirect to.-CSDN博客

相关推荐
yao124973647318 分钟前
【无标题】
python·synergy·deskflow·键鼠共享·hyprland·niri
workflower38 分钟前
原子需求的属性
python·测试用例·需求分析·软件需求
yq1982043011561 小时前
使用Django构建视频解析网站 从Naver视频下载器看Web开发全流程
前端·django·音视频
尘缘浮梦1 小时前
协程asyncio入门案例 2
开发语言·python
kronos.荒1 小时前
滑动窗口+哈希表:最小覆盖子串
数据结构·python·散列表
AC赳赳老秦1 小时前
文旅AI趋势:DeepSeek赋能客流数据,驱动2026智慧文旅规模化跃迁
人工智能·python·mysql·安全·架构·prometheus·deepseek
一个处女座的程序猿O(∩_∩)O1 小时前
Python面向对象的多态特性详解
开发语言·python
秋刀奈1 小时前
Python 现代工程实践
python
清水白石0082 小时前
Fixture 的力量:pytest fixture 如何重新定义测试数据管理
数据库·python·pytest
想用offer打牌2 小时前
一站式了解接口防刷(限流)的基本操作
java·后端·架构