Django——form组件和ModelForm

Django——form组件和ModelForm

一、原生form实现书城增删改查

1、构建模型并完成数据库迁移

(1)构建书城模型
from django.db import models

# Create your models here.
# 创建一个图书管理系统的模型


class Book(models.Model):
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=8, decimal_places=2)   # 8个有效数,两个浮点
    date = models.DateField()
    publish = models.ForeignKey("Publish", on_delete=models.CASCADE)
    authors = models.ManyToManyField("Author")

    def __str__(self):
        return self.title


class Publish(models.Model):
    name = models.CharField(max_length=32)

    def __str__(self):
        return self.name


class Author(models.Model):
    name = models.CharField(max_length=32)

    def __str__(self):
        return self.name
models.py
(2)数据库迁移
$ python3 manage.py makemigrations
$ python3 manage.py migrate

2、运用admin模块录入数据

from django.contrib import admin

# Register your models here.
from .models import *


admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Publish)
admin.py

  创建超级用户:

manage.py@formsDemo2 >  createsuperuser
Username (leave blank to use 'hqs'):  yuan
Email address:  
Warning: Password input may be echoed.
Password:  yuan1234
Warning: Password input may be echoed.
Password (again):  yuan1234
Superuser created successfully.

3、录入作者、出版社、书籍信息

  

4、代码

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from app01 import views


urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^books/$', views.book),
    url(r'^books/add', views.addbook),
    url(r'^books/edit/(\d+)', views.editbook),
]
urls.py
from django.shortcuts import render, redirect

# Create your views here.
from .models import *


def book(request):
    book_list = Book.objects.all()

    return render(request, 'books.html', locals())


def addbook(request):
    if request.method == "POST":
        title = request.POST.get("title")
        price = request.POST.get("price")
        date = request.POST.get("date")
        publish_id = request.POST.get("publish_id")
        # getlist(): Return the list of values for the key.
        author_pk_list = request.POST.getlist("author_pk_list")

        # 取到用户输入的书籍信息后添加到数据库Book表中
        book_obj = Book.objects.create(title=title, price=price, date=date, publish_id=publish_id)

        # 直接绑定主键,将作者对象添加到这本书的作者集合中
        book_obj.authors.add(*author_pk_list)

        return redirect("/books/")

    publish_list = Publish.objects.all()
    author_list = Author.objects.all()

    return render(request, "addbook.html", locals())


def editbook(request, edit_book_id):
    if request.method == "POST":
        title = request.POST.get("title")
        price = request.POST.get("price")
        date = request.POST.get("date")
        publish_id = request.POST.get("publish_id")
        # getlist(): Return the list of values for the key.
        author_pk_list = request.POST.ge
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值