4、django操作单表进行增删改
admin
2023-07-09 16:24:06
0

1、django初始化配置
https://blog.51cto.com/yht1990/2382898

2、创建模型
D:\mysite\polls\models.py

from django.db import models
class Publisher(models.Model):
    id = models.AutoField(primary_key=True)  # 自增的ID主键
    name = models.CharField(max_length=64, null=False)

3、建表

python manage.py makemigrations
python manage.py migrate

4、url配置
主项目url
D:\mysite\mysite\urls.py

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

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

应用项目url
D:\mysite\polls\urls.py

from django.urls import path

from . import views
 #添加命名空间
app_name = 'polls'
urlpatterns = [

    #访问列表页
    path('publisher_list/', views.published_list,name='published_list'),
        #添加数据
    path('add_publisher/', views.add_publisher,name='add_publisher'),
    #删除数据
    path('delete_publisher/', views.delete_publisher,name='delete_publisher'),
    #path('edit_publisher/', views.edit_publisher,name='edit_publisher'),
]

五、静态html(以后有列表页,数据增、改页面,删除不需要单独html页面)
列表页
D:\mysite\polls\templates\polls\publisher_list.html




    
    出版社列表



添加新的出版社


        {% for publisher in publisher_list %}
            
        {% endfor %}
    
序号 ID 出版社名称 操作
{{ forloop.counter }} {{ publisher.id }} {{ publisher.name }} 删除 编辑

#静态htm数据增页面
D:\mysite\polls\templates\polls\add_publisher.html




    
    添加出版社



添加出版社

{% csrf_token %}

{{ error }}

#静态html改页面
D:\mysite\polls\templates\polls\edit_publisher.html




    
    编辑出版社



编辑出版社

python后端
D:\mysite\polls\views.py

from django.shortcuts import HttpResponse, render, redirect
from polls import models
from .models import Publisher

#列表页函数
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请求,我就取到用户填写的数据
    print(request.method)
    if request.method == "POST":
        new_name = request.POST.get("publisher_name", None)
        if new_name:
            # 通过ORM去数据库里新建一条记录
            Publisher.objects.create(name=new_name)
           #返回访问列表面,退出
            return redirect("/polls/publisher_list/")
        else:
                    #如果用户post后没有数据则设置变量
            error_msg = "出版社名字不能为空!"
     #如果是get请求访问此页面
    return render(request, "polls/add_publisher.html", {"error": error_msg})

#删除函数
def delete_publisher(request):
    print(request.GET)
    print("=" * 120)
    #1. 从GET请求的参数里面拿到将要删除的数据的ID值
    del_id = request.GET.get("id", None)  # 字典取值,娶不到默认为None
    #如果能取到id值
    if del_id:
        # 去数据库删除当前id值的数据
        #根据id值查找到数据
        del_obj = models.Publisher.objects.get(id=del_id)
        #删除
        del_obj.delete()
        #返回删除后的页面,跳转到出版社的列表页,查看删除是否成功
        return redirect("/polls/publisher_list/")
    else:
        return HttpResponse("要删除的数据不存在!")

#编辑函数
def edit_publisher(request):
    #用户修改完出版社的名字,点击提交按钮,给我发来新的出版社名字
    if request.method == "POST":
        print(request.POST)
        #取新出版社名字
        edit_id = request.POST.get("id")
        new_name = request.POST.get("publisher_name")
        #更新出版社
        #根据id取到编辑的是哪个出版社
        edit_publisher = models.Publisher.objects.get(id=edit_id)
        edit_publisher.name = new_name
        edit_publisher.save()  # 把修改提交到数据库
        #跳转出版社列表页,查看是否修改成功
        return redirect("/polls/publisher_list/")
    #从GET请求的URL中取到id参数
    edit_id = request.GET.get("id")
    if edit_id:
        #获取到当前编辑的出版社对象
        publisher_obj = models.Publisher.objects.get(id=edit_id)
        return render(request, "polls/edit_publisher.html", {"publisher": publisher_obj})
    else:
        return HttpResponse("编辑的出版社不存在!")

访问列表页
http://127.0.0.1:8000/polls/publisher_list/
4、django操作单表进行增删改
访问添加页
http://127.0.0.1:8000/polls/add_publisher/
4、django操作单表进行增删改
访问编辑页
http://127.0.0.1:8000/polls/edit_publisher/?id=7
4、django操作单表进行增删改

相关内容

热门资讯

美前副总统:共和党失去了方向,... 2026年是美国的中期选举年,共和党选情不利,可能在年底的选举中遭遇挫败。美国前副总统彭斯5月31日...
南枝原来去过中国?《给阿嬷的情... 《给阿嬷的情书》票房口碑双丰收,目前票房已突破13亿。凤凰卫视最新一期《问答神州》专访了该片导演蓝鸿...
法国海军扣押一艘俄“影子舰队”... 近日,法国海军在大西洋海域扣押了一艘据称从俄罗斯摩尔曼斯克出发的油轮,引发俄方强烈不满。俄新社6月1...
凤凰晚报丨面粉染头模仿黄仁勋,... 今日人物【面粉染头模仿黄仁勋,农村青年走红后称遭“法务”警告】“先赔偿5000元肖像侵权使用费,再删...
亲特朗普极右派候选人领跑哥伦比... 【文/观察者网 熊超然】当地时间5月31日,哥伦比亚总统选举拉开帷幕,首轮投票计票工作已完成逾99%...
2026年度网络举报系列宣传活... 5月28日至29日,以“每一件举报,都是共治的力量——豫你e行 同心护网”为主题的2026年度网络举...
中原首例帝企鹅DNA性别鉴定!... 近日,郑州海昌海洋公园正式对外公布中原首对人工繁育的帝企鹅萌宝的DNA性别鉴定报告。这是中原首个将 ...
我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...