学员管理示例——班级管理(单表操作)

一、新建views文件夹

  1、新建views文件夹目的:给不同管理的操作分类,比如班级操作归为一类。

     2、必须删除原来的views,以免路径搜索不到新建views文件夹

  3、创建classes.py文件

二、操作流程(URL -> 函数 -> HTML文件 -> URL)

  URL路由

from django.contrib import admin
from django.urls import re_path
from app01.views import classes    # 引入模块

urlpatterns = [
    re_path('admin/', admin.site.urls),
    re_path('classes.html/$', classes.get_classes),   
    re_path('add_classes.html$', classes.add_classes),
    re_path('del_classes.html$', classes.del_classes),
    re_path('edit_classes.html$', classes.edit_classes),
]
注意:
  1、每个url路由最后由$符结束,防止检索出错。
  2、第一个url路由必须以 /$ 结尾,后面同上。(版本问题)

  创建相应的函数

from django.shortcuts import render,HttpResponse,redirect
from app01 import models


def get_classes(request):
    cls_list = models.Classes.objects.all()
    # print(cls_list)
    return render(request,"get_classes.html",{"cls_list":cls_list})


def add_classes(request):
    if request.method == "GET":
        return render(request, "add_classes.html")
    elif request.method == "POST":
        title = request.POST.get("title")
        print(title)
        models.Classes.objects.create(name=title)
        return redirect("/classes.html")

def del_classes(request):
    nid = request.GET.get("nid")
    print(nid)
    models.Classes.objects.filter(id=nid).delete()
    return redirect("/classes.html")

def edit_classes(request):
    if request.method == "GET":
        nid = request.GET.get("nid")
        obj = models.Classes.objects.filter(id=nid).first()
        return render(request,"edit_classes.html",{"obj":obj})
    elif request.method == "POST":
     # nid以get请求方式传入 nid = request.GET.get("nid") title = request.POST.get("title") models.Classes.objects.filter(id=nid).update(name=title) return redirect("/classes.html")

  

总结:  
  1、从数据库取数据: models.Classes.objects.filter(id=nid).update(name=title)
  2、取返回值数据:request.GET.get("nid")    

注意:  
   1、render是打开HTML文件,而redirect是url路由
  2、跳转至url路由时,需在前加 / 斜杆,打开跳转HTML文件时则不用

  创建HTML文件

    <div>
        <a href="/add_classes.html">添加</a>
    </div>
    <div>
        <table border="1">
            <thead>
                <tr>
                    <th>ID</th>     {# 列名 #}
                    <th>名称</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                {% for row in cls_list %}
                    <tr>
                        <td>    {# 行,对应上面的列 #}
                             {{row.id}}
                        </td>
                        <td>
                            {{row.name}}
                        </td>
                        <td>
                            <a href="/del_classes.html?nid={{row.id}}" >删除</a>
                            |
                            <a href="/edit_classes.html?nid={{row.id}}" >编辑</a>
                        </td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    </div>

  

<form action="/add_classes.html" method="POST">
    {% csrf_token %}    {# 解除POST请求 #}
    <input type="text" name="title" >
    <input type="submit" value="提交" >   {# value为默认值 #}
</form>

  

<form action="/edit_classes.html?nid={{obj.id}}" method="POST">   {# 用get请求发送id更简洁 #}
    {% csrf_token %}
    <!--<input type="text" name="id" value="{{obj.id}}" style="display:none">-->   {# 隐藏ID #}
    <input type="text" name="title" value="{{obj.name}}">
    <input type="submit" value="提交">
</form>

  总结:

    1、页面跳转为url路由请求

扫描二维码关注公众号,回复: 3015729 查看本文章

 

猜你喜欢

转载自www.cnblogs.com/Lujun1028/p/9573302.html
今日推荐