zoukankan      html  css  js  c++  java
  • 西游之路——python全栈——学员管理示例之班级管理(单表操作)

    一、新建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路由请求

     

  • 相关阅读:
    POJ 3093 Margaritas on the River Walk(背包)
    BZOJ 2287 【POJ Challenge】消失之物(DP+容斥)
    WC2017 Day1
    WC2017 Day0
    WC2017 Conclusion
    WC2017 Day6
    UOJ #58 糖果公园
    WC2017 Day5
    codevs 1946 阿狸的打字机
    HDU 2457 DNA_repair
  • 原文地址:https://www.cnblogs.com/Lujun1028/p/9573302.html
Copyright © 2011-2022 走看看