真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

5、django操作表一對多實(shí)戰(zhàn)

表結(jié)構(gòu)
5、django操作表一對多實(shí)戰(zhàn)
一、入口url設(shè)置
D:\mysite\mysite\urls.py

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括赤城網(wǎng)站建設(shè)、赤城網(wǎng)站制作、赤城網(wǎng)頁制作以及赤城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,赤城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到赤城省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('polls/',include('polls.urls')),
    path('admin/', admin.site.urls),
]

二、polls應(yīng)用url設(shè)置
D:\mysite\polls\urls.py

from django.urls import path

from . import views
app_name = 'polls'
urlpatterns = [

    #出版社相關(guān)的對應(yīng)關(guān)系
        #出版社列表頁
    path('publisher_list/', views.published_list,name='published_list'),
        #添加出版社
    path('add_publisher/', views.add_publisher,name='add_publisher'),
        #刪除出版社
    path('delete_ublisher/', views.delete_publisher,name='delete_publisher'),
        #編輯出版社
    path('edit_publisher/', views.edit_publisher,name='edit_publisher'),

    #書相關(guān)的對應(yīng)關(guān)系
        #書籍列表頁
    path('book_list/', views.book_list,name='book_list'),
        #添加書籍
    path('add_book/', views.add_book,name='add_book'),  
        #刪除書籍
    path('delete_book/', views.delete_book,name='delete_book'),  
        #編輯書籍
    path('edit_book/', views.edit_book,name='edit_book'),  

]

三、modes配置
D:\mysite\polls\models.py

from django.db import models
#出版社
class Publisher(models.Model):
    id = models.AutoField(primary_key=True)  # 自增的ID主鍵
    #創(chuàng)建一個(gè)varchar(64)的唯一的不為空的字段
    name = models.CharField(max_length=64, null=False)

#書
class Book(models.Model):
    id = models.AutoField(primary_key=True)  # 自增的ID主鍵
    #創(chuàng)建一個(gè)varchar(64)的唯一的不為空的字段
    title = models.CharField(max_length=64, null=False, unique=True)
    #和出版社關(guān)聯(lián)的外鍵字段
    publisher = models.ForeignKey(to="Publisher", on_delete=models.CASCADE)
#建建表
python manage.py makemigrations
python manage.py migrate

四靜態(tài)文件設(shè)置

####################出版社html#########################
#出版社列表頁D:\mysite\polls\templates\polls\publisher_list.html



    
    出版社列表



添加新的出版社


        {% for publisher in publisher_list %}
            
        {% endfor %}
    
序號 ID 出版社名稱 操作
{{ forloop.counter }} {{ publisher.id }} {{ publisher.name }} 刪除 編輯
#添加出版社列表頁D:\mysite\polls\templates\polls\add_publisher.html 添加出版社

添加出版社

{% csrf_token %}

{{ error }}

#編輯出版社列表頁D:\mysite\polls\templates\polls\edit_publisher.html 編輯出版社

編輯出版社

{{ error }}

####################書籍html######################### #書籍列表頁D:\mysite\polls\templates\polls\book_list.html 書籍列表

所有的書籍都在這里!

添加書籍 {% for i in all_book %} {% endfor %}
id title publisher 操作
{{ i.id }} {{ i.title }} {{ i.publisher.name }} 刪除 編輯
#添加書籍D:\mysite\polls\templates\polls\add_book.html 添加書籍

添加書籍

書名:

出版社:

#編輯書籍 D:\mysite\polls\templates\polls\edit_book.html 編輯書籍

編輯書籍

書名:

出版社:

五、后端處理D:\mysite\polls\views.py

from django.shortcuts import render,redirect,ttpResponse
from .models import Question,Publisher
from polls import models

#出版社列表
def published_list(request):
    ret = Publisher.objects.all().order_by("id")
    return render(request,"polls/publisher_list.html",{"publisher_list": ret})

#添加新的出版社
def add_publisher(request):
    error_msg = ""
    #如果是POST請求,我就取到用戶填寫的數(shù)據(jù)
    print(request.method)
    if request.method == "POST":
        new_name = request.POST.get("publisher_name", None)
        if new_name:
            # 通過ORM去數(shù)據(jù)庫里新建一條記錄
            Publisher.objects.create(name=new_name)
            #引導(dǎo)用戶訪問出版社列表頁,查看是否添加成功  --> 跳轉(zhuǎn)
            return redirect("/polls/publisher_list/")
        else:
            error_msg = "出版社名字不能為空!"
    #用戶第一次來,我給他返回一個(gè)用來填寫的HTML頁面
    return render(request, "polls/add_publisher.html", {"error": error_msg})

#刪除出版社
def delete_publisher(request):
    print(request.GET)
    print("=" * 120)
    #刪除指定的數(shù)據(jù)
    #1. 從GET請求的參數(shù)里面拿到將要?jiǎng)h除的數(shù)據(jù)的ID值
    del_id = request.GET.get("id", None)  # 字典取值,娶不到默認(rèn)為None
    #如果能取到id值
    if del_id:
        # 去數(shù)據(jù)庫刪除當(dāng)前id值的數(shù)據(jù)
        #根據(jù)id值查找到數(shù)據(jù)
        del_obj = models.Publisher.objects.get(id=del_id)
        #刪除
        del_obj.delete()
        #返回刪除后的頁面,跳轉(zhuǎn)到出版社的列表頁,查看刪除是否成功
        return redirect("/polls/publisher_list/")
    else:
        return HttpResponse("要?jiǎng)h除的數(shù)據(jù)不存在!")

#編輯出版社
def edit_publisher(request):
    #用戶修改完出版社的名字,點(diǎn)擊提交按鈕,給我發(fā)來新的出版社名字
    if request.method == "POST":
        print(request.POST)
        #取新出版社名字
        edit_id = request.POST.get("id")
        new_name = request.POST.get("publisher_name")
        #更新出版社
        #根據(jù)id取到編輯的是哪個(gè)出版社
        edit_publisher = models.Publisher.objects.get(id=edit_id)
        edit_publisher.name = new_name
        edit_publisher.save()  # 把修改提交到數(shù)據(jù)庫
        #跳轉(zhuǎn)出版社列表頁,查看是否修改成功
        return redirect("/polls/publisher_list/")
    #從GET請求的URL中取到id參數(shù)
    edit_id = request.GET.get("id")
    if edit_id:
        #獲取到當(dāng)前編輯的出版社對象
        publisher_obj = models.Publisher.objects.get(id=edit_id)
        return render(request, "polls/edit_publisher.html", {"publisher": publisher_obj})
    else:
        error_msg = "編輯的出版社不存在!"
        return HttpResponse("編輯的出版社不存在!")

#展示書的列表
def book_list(request):
    # 去數(shù)據(jù)庫中查詢所有的書籍
    all_book = models.Book.objects.all()
    #在HTML頁面完成字符串替換(渲染數(shù)據(jù))
    return render(request, "polls/book_list.html", {"all_book": all_book})

#添加書籍
def add_book(request):
    if request.method == "POST":
        new_title = request.POST.get("book_title")
        new_publisher_id = request.POST.get("publisher")
        #創(chuàng)建新書對象,自動(dòng)提交
        models.Book.objects.create(title=new_title, publisher_id=new_publisher_id)
        #返回到書籍列表頁
        return redirect("/polls/book_list/")

    #取到所有的出版社
    ret = models.Publisher.objects.all()
    return render(request, "polls/add_book.html", {"publisher_list": ret})

#刪除書籍
def delete_book(request):
    #從URL里面獲取要?jiǎng)h除的書籍的id值
    delete_id = request.GET.get("id")  # 從URL里面取數(shù)據(jù)
    #去刪除數(shù)據(jù)庫中刪除指定id的數(shù)據(jù)
    models.Book.objects.get(id=delete_id).delete()
    #返回書籍列表頁面, 查看是否刪除成功
    return redirect("/polls/book_list/")

#編輯書籍
def edit_book(request):
    if request.method == "POST":
        # 從提交的數(shù)據(jù)里面取,書名和書關(guān)聯(lián)的出版社
        edit_id = request.POST.get("id")
        new_title = request.POST.get("book_title")
        new_publisher_id = request.POST.get("publisher")
        #更新
        edit_book_obj = models.Book.objects.get(id=edit_id)
        edit_book_obj.title = new_title  # 更新書名
        edit_book_obj.publisher_id = new_publisher_id  # 更新書籍關(guān)聯(lián)的出版社
        #將修改提交到數(shù)據(jù)庫
        edit_book_obj.save()
        #返回書籍列表頁面,查看是否編輯成功
        return redirect("/polls/book_list/")

    #返回一個(gè)頁面,讓用戶編輯書籍信息
    #取到編輯的書的id值
    edit_id = request.GET.get("id")
    #根據(jù)id去數(shù)據(jù)庫中把具體的書籍對象拿到
    edit_book_obj = models.Book.objects.get(id=edit_id)
    ret = models.Publisher.objects.all()
    return render(
        request,
        "polls/edit_book.html",
        {"publisher_list": ret, "book_obj": edit_book_obj}
    )

訪問出版社列表頁
http://127.0.0.1:8000/polls/publisher_list/
5、django操作表一對多實(shí)戰(zhàn)

添加出版社頁
http://127.0.0.1:8000/polls/add_publisher/
5、django操作表一對多實(shí)戰(zhàn)

編輯出版社
http://127.0.0.1:8000/polls/edit_publisher/?id=1
5、django操作表一對多實(shí)戰(zhàn)

訪問書籍列表頁
http://127.0.0.1:8000/polls/book_list/
5、django操作表一對多實(shí)戰(zhàn)

添加書籍頁
http://127.0.0.1:8000/polls/add_book/
5、django操作表一對多實(shí)戰(zhàn)

編輯書籍頁
http://127.0.0.1:8000/polls/edit_book/?id=5
5、django操作表一對多實(shí)戰(zhàn)

打開數(shù)據(jù)庫視圖查看
5、django操作表一對多實(shí)戰(zhàn)

5、django操作表一對多實(shí)戰(zhàn)


新聞名稱:5、django操作表一對多實(shí)戰(zhàn)
瀏覽地址:http://weahome.cn/article/pohpjc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部