from django.contrib import admin
from django.urls import path, re_path, include
from index import views as index_views
from host import urls as host_urls
urlpatterns =[
path('admin/', admin.site.urls),
path("index/", index_views.index),
re_path(r"^host/", include(host_urls))]
host/urls.py
from django.urls import path, re_path
from host import views
urlpatterns =[
path('list/', views.host_list, name="host_list"),
path('add/', views.Host_add.as_view()),
re_path(r'del/(\d+)', views.host_del),
path("edit/", views.Host_edit.as_view()),]
数据库相关
host/models.py
from django.db import models
# Create your models here.classHost(models.Model):# AutoField 表示自增列# primary_key 表示为该表主键id= models.AutoField(primary_key=True)
hostname = models.CharField(max_length=16)
ip_addr = models.CharField(max_length=32)
视图系统相关
index/views.py
from django.shortcuts import render
# Create your views here.defindex(request):return render(request,"index.html")
host/views.py
from django.shortcuts import render, redirect, HttpResponse
from django import views
from host import models
from django.urls import reverse
# Create your views here.defhost_list(request):# 查询 Host 表下所有的数据
data = models.Host.objects.all()return render(request,"host_list.html",{"data": data})classHost_add(views.View):defget(self, request):# 直接返回页面return render(request,"host_add.html")defpost(self, request):# 获取前端页面中 form 表单中 name 属性的数据
hostname = request.POST.get("hostname")
ip_addr = request.POST.get("ip_addr")
models.Host.objects.create(hostname=hostname, ip_addr=ip_addr)return redirect(reverse("host_list"))classHost_edit(views.View):defget(self, request):# 从 get 请求中拿到 id 的值
host_id = request.GET.get("id")# 根据 id 查询, 可以使用 get 和 filter
data = models.Host.objects.filter(id=host_id)# 做了一个容错iflen(data)==0orlen(data)>1:return HttpResponse("数据查询出错")else:return render(request,"host_edit.html",{"data": data[0]})defpost(self, request):# 从前端获取新数据
hostname = request.POST.get("hostname")
ip_addr = request.POST.get("ip_addr")# 在 list 界面拼接了 url, id 作为 get 请求的参数# 根据 id 拿到对应的数据库对象
host_id = request.GET.get("id")
obj = models.Host.objects.filter(id=host_id)[0]# 修改数据为新的值
obj.hostname = hostname
obj.ip_addr = ip_addr
# 保存
obj.save()return redirect(reverse("host_list"))defhost_del(request,id):# 找到数据库对象, 并且调用 delete() 删除它
models.Host.objects.filter(id=id).delete()return redirect(reverse("host_list"))