zoukankan      html  css  js  c++  java
  • 第二篇-Django建立数据库各表之间的联系(中)

    上篇中已经建立了两个table,Book和Publish。这篇介绍如何用python增删改查数据库中的数据。

    在views.py中创建一个index函数

    from django.shortcuts import render
    
    # Create your views here.
    from app01.models import *
    
    def index(request):
        return render(request,"index.html")
    

     返回一个index.html页面。urls.py中也要加入相应的函数。

    from django.contrib import admin
    from django.urls import path
    from app01 import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
    ]
    

     写一个index.html页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .head{
                line-height: 40px;
                background-color: green;
                color: white;
                text-align: center;
            }
        </style>
    </head>
    <body>
    
    <div class="outer">
        <div class="head">标题</div>
        <h1>一对多</h1>
        <div class="content">
            <a href="/addbook/">添加书籍</a>
            <a href="/update/">修改书籍</a>
            <a href="/delete/">删除书籍</a>
            <a href="/select/">查询书籍</a>
        </div>
        <hr>
        <div class="queryResult">
            {% for book in book_list %}
                <div>
                    <p>{{ book.name }} {{ book.author }} {{ book.price }}</p>
                </div>
            {% endfor %}
        </div>
    </div>
    
    </body>
    </html>
    

     由于html中点击添加书籍,修改书籍,删除书籍以及查询书籍会跳到不同的链接,所以在urls.py里面要添加相应链接

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
        path('addbook/', views.addbook),
        path('update/', views.update),
        path('delete/', views.delete),
        path('select/', views.select),
    ]
    

     同样,在views.py中要添加相应函数,先写一个addbook的函数进行测试。

    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    from app01.models import *
    
    def index(request):
        return render(request,"index.html")
    
    def addbook(request):
        Book.objects.create(name="linux运维",price=77,pub_date="2018-11-2",publish_id=2)
        return HttpResponse("添加成功")
    
    def update():pass
    
    def delete():pass
    
    def select():pass
    View Code

    然后可以运行试试,在命令行窗口Terminal中使用命令:

    python manage.py runserver 8888

    然后在浏览器地址栏输入http://127.0.0.1:8888/index/

    得到此页面,由于我们已经在views.py中写了addbook的函数,所以我们可以点击添加书籍,看看有没有把书籍添加进去。会跳进addbook界面。

    我们现在在去数据库中查看,会发现已经添加了一行信息进去

    id那一栏是自动按照自增一的顺序添加的,由于第一次添加数据时,由于没有建立publish表,导致外键不能添加报错。所以id=1已经被使用了,后来建立的id是从2开始的。可以看到linux运维这一栏已经被添加成功了。

    注意,之前添加外键那一栏的时候是直接用 publish_id添加的,如果想用publish添加的话,需要用对象添加进去。

    def addbook(request):
        # Book.objects.create(name="linux运维",price=77,pub_date="2018-11-2",publish_id=2)
    
        publish_obj=Publish.objects.filter(name="人民出版社")[0]
        Book.objects.create(name="GO",price=23,pub_date="2018-10-2",publish=publish_obj)
        return HttpResponse("添加成功")
    View Code

    刷新http://127.0.0.1:8888/addbook/,可以看见GO那一栏也被添加进去了。

  • 相关阅读:
    1442. Count Triplets That Can Form Two Arrays of Equal XOR
    1441. Build an Array With Stack Operations
    312. Burst Balloons
    367. Valid Perfect Square
    307. Range Sum Query
    1232. Check If It Is a Straight Line
    993. Cousins in Binary Tree
    1436. Destination City
    476. Number Complement
    383. Ransom Note
  • 原文地址:https://www.cnblogs.com/smart-zihan/p/9894432.html
Copyright © 2011-2022 走看看