数据库数据映射

前端渲染数据库数据

from django.shortcuts import render, HttpResponse, redirect
from app01 import models
def librarylist(request):
    # 获取数据库信息
    press_list = models.Press.objects.all()
    for i in press_list:
        print(i)
        print(i.name)
        print(i.id)
    # 传入前端页面    
    return render(request, "press_list.html", {"press_list": press_list})

前端页面循环渲染

{% for i in press_list %}
    <tr>
        <td>{{ forloop.counter}}</td>#循环序列号
        <td>{{ i.id }}</td>
        <td>{{ i.name }}</td>
    </tr>
{% endfor %}

通过前端页面添加数据至数据库

<form action="" method="post">
    出版社名称:<input type="text" name="press_name"><span>{{ error }}</span>
    <button>提交</button>
</form>

页面路径

from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('librarylist/', views.librarylist),
    path('adddata/', views.adddata),
    path('press_del/', views.press_del),
    path('press_updata/', views.press_updata)
]
# 新增内容
def adddata(request):
    # post请求 获取数据
    # 增加至数据库
    # 返回一个重定向
    if request.method == "POST":
        press_name = request.POST.get("press_name")
        if models.Press.objects.filter(name=press_name):
            # 判断数据库是否有重复提示
            return render(request, 'adddata.html', {"error": '重复添加'})
        if not press_name:
            return render(request, 'adddata.html', {'error': '名称不能为空'})
        print(press_name)
        models.Press.objects.create(name=press_name)
        return redirect('/librarylist/')
    return render(request, "adddata.html", {'error': ''})


# 删除
def press_del(request):
    if request.method == "GET":
        press_id = request.GET.get("id")
        # models.Press.objects.get(id=press_id).delete()#查询一个对象,删除该对象
        # 未查询到不会删除
        models.Press.objects.filter(id=press_id).delete()  # 查询一个对象列表,删除该对象列表里面的所有像
        return redirect("/librarylist/")



# 更新
def press_updata(request):
    press_id = request.GET.get("id")
    pub_obj = models.Press.objects.get(id=press_id)
    if request.method == "GET":
        return render(request, 'press_updata.html', {'pub_obj': pub_obj})
    else:
        press_name = request.POST.get("press_name")
        pub_obj.name = press_name  # 只是在内存中修改了数据
        pub_obj.save()  # 将修改数据保存
        print(press_name)
        return redirect('/librarylist/')

ORM对象关系映射

  • 类对应表
  • 对象对应数据行(记录)
  • 属性对应字段
press_list = models.Press.objects.all() #查询所有
press_name = request.POST.get("press_name")# 查询一个 保证唯一, 多个会报错
models.Press.objects.filter(name=press_name) #查询多个
models.Press.objects.create(name=press_name) #增加
models.Press.objects.get(id=press_id).delete()#查询一个对象,删除该对象
# 未查询到不会删除
models.Press.objects.filter(id=press_id).delete()  # 查询一个对象列表,删除该对象列表里面的所有像

模板语法

return render(request, "index.html", {"value": key})

前端页面渲染

<div class="form-group {% if error %}has-error{% endif %} ">
    <label for="inputEmail3" class="col-sm-2 control-label">书籍名称:</label>
    <div class="col-sm-8">
        <input type="text" class="form-control" name="book_name" placeholder="请输入书籍名称">
        <span class="help-block">{{ error }}</span>
    </div>
</div>
{% if error %}
    条件成立执行语句
{% endif %} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值