1,創建 Django 應用
Test/app9
django-admin startapp app9
2,注冊應用
Test/Test/settings.py
3,添加應用路由
Test/Test/urls.py
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('', include('app9.urls')),path('app1/', include('app1.urls')),path('app2/', include('app2.urls')),path('app3/', include('app3.urls')),path('app4/', include('app4.urls')),path('app5/', include('app5.urls')),path('app6/', include('app6.urls')),path('app7/', include('app7.urls')),path('app8/', include('app8.urls')),path('app9/', include('app9.urls')),
]
?4,添加模型
Test/app9/models.py
from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)def __str__(self):return self.nameclass Book(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')def __str__(self):return self.title
5,注冊模型到admin
Test/app9/admin.py
from django.contrib import admin
from .models import Author, Bookadmin.site.register(Author)
admin.site.register(Book)
5.1 創建超級賬號
python manage.py createsuperuser
按照提示輸入用戶名、郵箱和密碼。
5.2?通過admin管理后臺添加數據
http://127.0.0.1:8000/admin/
http://127.0.0.1:8000/admin/login/?next=/admin/
添加作者:
- 點擊 "Authors"。
- 點擊右上角的 "Add Author"。
- 輸入作者名稱,例如 "小強"。
- 點擊 "Save"。
添加書籍:
- 點擊 "Books"。
- 點擊右上角的 "Add Book"。
- 輸入書名,例如 "java入門到棄坑233"。
- 在 "Author" 字段選擇剛才添加的作者 "小強"。
- 點擊 "Save"。
- 重復以上步驟添加更多書籍,例如 "學習msql"。
查看數據庫:
app9_author表,id?為2的作者小強,關聯app9_book表author_id為2的兩本書籍,建立了一對多的關系
5.3 執行py腳本實例化添加數據
Test/populate_data.py
import os
import djangoos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Test.settings')
django.setup()from app9.models import Author, Book# 清空現有數據
Author.objects.all().delete()
Book.objects.all().delete()# 添加作者和書籍
author1 = Author.objects.create(name="小強")
Book.objects.create(title="Django 從入門到入坑", author=author1)
Book.objects.create(title="pyhton 從入門到入坑", author=author1)author2 = Author.objects.create(name="小龍")
Book.objects.create(title="C++ 從入門到入坑", author=author2)
Book.objects.create(title="java 從入門到入坑", author=author2)print("數據添加成功!")
查看管理臺:
查看數據庫:
6,添加視圖函數
?Test/app9/views.py
from django.shortcuts import render, get_object_or_404
from .models import Author, Bookdef author_list(request):authors = Author.objects.all()return render(request, '9/author_list.html', {'authors': authors})def author_detail(request, author_id):author = get_object_or_404(Author, pk=author_id)return render(request, '9/author_detail.html', {'author': author})
7,添加html代碼
?Test/templates/9/author_list.html
<!DOCTYPE html>
<html>
<head><title>Authors</title>
</head>
<body><h1>Authors</h1><ul>{% for author in authors %}<li><a href="{% url 'author_detail' author.id %}">{{ author.name }}</a></li>{% endfor %}</ul>
</body>
</html>
Test/templates/9/author_detail.html
<!DOCTYPE html>
<html>
<head><title>{{ author.name }}</title>
</head>
<body><h1>{{ author.name }}</h1><h2>Books</h2><ul>{% for book in author.books.all %}<li>{{ book.title }}</li>{% endfor %}</ul><a href="{% url 'author_list' %}">Back to Authors</a>
</body>
</html>
8,添加路由地址
Test/app9/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('authors/', views.author_list, name='author_list'),path('authors/<int:author_id>/', views.author_detail, name='author_detail'),
]
9,訪問頁面
http://127.0.0.1:8000/app9/authors/
?點擊作者小強,可以看到他名下的書籍
10,刪除作者和書籍
10.1?添加刪除視圖函數
Test/app9/views.py
from django.shortcuts import render, get_object_or_404
from .models import Author, Bookdef author_list(request):authors = Author.objects.all()return render(request, '9/author_list.html', {'authors': authors})def author_detail(request, author_id):author = get_object_or_404(Author, pk=author_id)return render(request, '9/author_detail.html', {'author': author})# 刪除書籍
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messagesfrom .models import Author, Bookdef delete_author(request, author_id):author = get_object_or_404(Author, pk=author_id)if request.method == 'POST':author.delete()messages.success(request, '作者已成功刪除!')return redirect('author_list') # 重定向到作者列表視圖return render(request, '9/confirm_delete_author.html', {'author': author})
10.2?添加刪除html模版
Test/templates/9/confirm_delete_author.html
<h1>確認刪除作者</h1>
<p>你確定要刪除 "{{ author.name }}" 嗎?</p>
<form method="POST">{% csrf_token %}<button type="submit">確認刪除</button><a href="{% url 'author_list' %}">取消</a>
</form>
10.3?給列表html添加刪除按鈕
Test/templates/9/author_list.html
<!DOCTYPE html>
<html>
<head><title>Authors</title>
</head>
<body><h1>Authors</h1><ul>{% for author in authors %}<li><a href="{% url 'author_detail' author.id %}">{{ author.name }}</a></li>{% endfor %}</ul><ul>{% for author in authors %}<li>{{ author.name }}<a href="{% url 'delete_author' author.id %}">刪除</a></li>{% endfor %}</ul></body>
</html>
10.4?添加路由地址
Test/app9/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('authors/', views.author_list, name='author_list'),path('authors/<int:author_id>/', views.author_detail, name='author_detail'),path('delete_author/<int:author_id>/', views.delete_author, name='delete_author'),
]
10.5?訪問頁面
?http://127.0.0.1:8000/app9/authors/
對比數據庫刪除前后,可以看到與小強關聯的兩本書,在刪除作者小強后也被一并刪除了。