当前位置: 移动技术网 > IT编程>脚本编程>Python > Django 练习班级管理系统四 -- 编辑班级

Django 练习班级管理系统四 -- 编辑班级

2019年07月02日  | 移动技术网IT编程  | 我要评论

谷俊山与谷景生,b13区下载,阴阳人雌雄同体器官

修改 classes.html

{% extends "layout.html" %}

{% block css %}
{% endblock %}

{% block content %}
    <h1>班级管理</h1>
    <div>
        <input id="id_add" type="button" value="添加">
        <a href="/add_classes.html">添加</a>
    </div>
    <table border="1">
        <thead>
            <tr>
                <th>id</th>
                <th>标题</th>
            </tr>
        </thead>
        <tbody>
            {% for item in cls_list %}
                <tr>
                    <td klvchen="id">{{ item.id }}</td>
                    <td klvchen="caption">{{ item.caption }}</td>
                    <td>
                        <a class="td-edit">编辑</a>| <a href="edit_classes.html?nid={{ item.id }}">跳转编辑</a>|<a class="td-delete">删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>

    <div class="pagination">
        {{ str_pager|safe }}
    </div>

    <div class="modal hide">
        <form method="post" action="/classes.html">
            <input name="id" type="text" class="hide">
            <input name="caption" type="text" placeholder="标题">
            <input id="id_modal_cancel" type="button" value="取消">
            <input type="submit" value="确定">
            <input type="button" id="modal_ajax_submit" value="ajax确定">
        </form>
    </div>
    <div class="shade hide"></div>
    <div class="remove hide">
        <input id="id_remove_cancel" type="button" value="取消">
        <input type="button" value="确定">
    </div>
{% endblock %}

{% block js %}
    <script>
        $(function () {
            $('#menu_class').addclass('active');

            bindaddevent();
            bindcancelevent();
            bindtddeleteevent();
            bindsubmitmodal();
            bindtdeditevent();
        })

        submit_url = null;

        function bindaddevent() {
            $('#id_add').click(function () {
                $('.modal, .shade').removeclass('hide');
                submit_url = "/classes.html";
            })

        }

        function bindcancelevent() {
            $('#id_modal_cancel').click(function () {
                $('.modal, .shade').addclass('hide')
            })

        }

        function bindtdeditevent() {
            // 使用 js 的事件绑定委托
            $('tbody').on('click', '.td-edit', function () {
                $('.modal, .shade').removeclass('hide')
                submit_url = "/up_classes.html";
                var tds = $(this).parent().prevall();
                //console.log(tds)
                //console.log(tds[0])
                //$('.modal input[name="id"]').val()
                /*
                $('.modal input[name="caption"]').val(tds[0].innertext);
                $('.modal input[name="id"]').val(tds[1].innertext);
                */
                $(this).parent().prevall().each(function () {
                    var text = $(this).text();
                    var name = $(this).attr('klvchen');
                    //console.log(text)
                    //console.log(name)
                    $('.modal input[name="'+ name +'"]').val(text)

                })
            })
        }

        function bindtddeleteevent() {
            /* 新建的 td 没有绑定 click 事件
            $('td .td-delete').click(function () {
                $('.remove, .shade').removeclass('hide')
            })
            */
            // 使用 js 的事件绑定委托
            $('tbody').on('click', '.td-delete', function () {
                $('.remove, .shade').removeclass('hide')
            })
        }


        function bindsubmitmodal() {
            $('#modal_ajax_submit').click(function () {
                var nid = $('.modal input[name="id"]').val();
                var value = $('.modal input[name="caption"]').val();
                submit_url = "/classes.html"
                $.ajax({
                    url: submit_url,
                    type: 'post',
                    data: {caption: value, id: nid},
                    datatype: "json",
                    success: function (rep) {
                        if(!rep.status){
                            alert(rep.error)
                        }else{
                            // 通过刷新整个界面来显示新数据
                            location.reload();

                        }
                    }
                })
                
            })

        }

    </script>
{% endblock %}

修改 urls.py

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login.html', views.login.as_view()),
    path('', views.index),
    path('classes.html', views.handle_classes),
    path('add_classes.html', views.handle_add_classes),
    path('edit_classes.html', views.handle_edit_classes),
    path('student.html', views.handle_student),
    path('teacher.html', views.handle_teacher),
]

修改 views.py

from django.shortcuts import render, redirect, httpresponse


# create your views here.
from app01 import models
from django import views
from django.utils.decorators import method_decorator


def outer(func):
    def inner(request, *args, **kwargs):
        print(request.method)
        return func(request, *args, **kwargs)
    return inner


class login(views.view):
    def dispatch(self, request, *args, **kwargs):
        # print(11111111111)
        ret = super(login, self).dispatch(request, *args, **kwargs)
        # print(22222222222)
        return ret


    def get(self, request, *args, **kwargs):
        print('get')
        return render(request, 'login.html', {'msg': ''})


    def post(self, request, *args, **kwargs):
        print('post')
        user = request.post.get('user')
        pwd = request.post.get('pwd')
        c = models.administrator.objects.filter(username=user, password=pwd).count()
        if c:
            request.session['is_login'] = true
            request.session['username'] = user
            rep = redirect('/')
            return rep
        else:
            message = "用户名或密码错误"
            return render(request, 'login.html', {'msg': message})


def auth(func):
    def inner(request, *args, **kwargs):
        is_login = request.session.get('is_login')
        if is_login:
            return func(request, *args, **kwargs)
        else:
            return redirect('/login.html')
    return inner


def index(request):
    current_username = request.session.get('username')
    if current_username:
        return render(request, '', {'username': current_username})
    else:
        return redirect('/login.html')


@auth
def handle_classes(request):
    if request.method == "get":
        current_user = request.session.get('username')
        # 获取所有的班级列表
        # for l in range(1, 102):
        #     models.classes.objects.create(caption='全栈一班%i' %(l))

        current_page = request.get.get('p', 1)
        current_page = int(current_page)

        # 所有数据的个数
        total_count = models.classes.objects.all().count()

        from utils.page import pagerhelper
        obj = pagerhelper(total_count, current_page, '/classes.html', 10)
        pager = obj.pager_str()

        cls_list = models.classes.objects.all()[obj.db_start:obj.db_end]

        return render(request,
                      'classes.html',
                      {'username': current_user, 'cls_list': cls_list, 'str_pager': pager})

    elif request.method == "post":
        # form 表单提交的处理方式
        """
        caption = request.post.get('caption', none)
        models.classes.objects.create(caption=caption)
        return redirect('/classes.html')
        """
        # ajax 提交的方式处理
        import json
        response_dict = {'status': true, 'error': none, 'data': none}

        caption = request.post.get('caption', none)

        # 判断是更新或者是添加操作
        nid = request.post.get('id', none)

        # 更新操作
        if nid and caption:
            obj = models.classes.objects.filter(id=nid).update(caption=caption)
            # print(nid)
            # print(caption)
            response_dict['data'] = {'id': nid, 'caption': caption}
        # 添加操作
        elif caption:
            obj = models.classes.objects.create(caption=caption)
            # print(obj.id)
            # print(obj.caption)
            response_dict['data'] = {'id': obj.id, 'caption': obj.caption}
        else:
            response_dict['status'] = false
            response_dict['error'] = "标题不能为空"
        return httpresponse(json.dumps(response_dict))


@auth
def handle_add_classes(request):
    message = ""
    if request.method == 'get':
        return render(request, 'add_classes.html', {'msg': message})
    elif request.method == 'post':
        caption = request.post.get('caption')
        if caption:
            models.classes.objects.create(caption=caption)
        else:
            message = '标题不能为空'
            return render(request, 'add_classes.html', {'msg': message})
        return redirect('/classes.html')
    else:
        return redirect('/')


# 通过url进行更新操作
@auth
def handle_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 = request.post.get('nid')
        caption = request.post.get('caption')
        models.classes.objects.filter(id=nid).update(caption=caption)
        return redirect('/classes.html')
    else:
        return redirect('/')


def handle_teacher(request):
    is_login = request.session.get('is_login')
    if is_login:
        current_user = request.session.get('username')
        return render(request, 'teacher.html', {'username':current_user})
    else:
        return redirect('/login.html')


def handle_student(request):
    is_login = request.session.get('is_login')
    if is_login:
        current_user = request.session.get('username')
        return render(request, 'student.html', {'username':current_user})
    else:
        return redirect('/login.html')

在 templates 文件夹下添加 edit_classes.html

{% extends "layout.html" %}

{% block css %}
{% endblock %}

{% block content %}
    <h1>编辑班级</h1>
    <form action="/edit_classes.html" method="post">
        <input class="hide" type="text" name="nid" value="{{ obj.id }}">
        <input type="text" name="caption" value="{{ obj.caption }}">
        <input type="submit" value="提交">
    </form>
{% endblock %}


{% block js %}
    <script>
        $(function () {
            $('#menu_class').addclass('active');
        })
    </script>
{% endblock %}

通过 ajax 方式来更新操作

通过 url 的方式来更新操作

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网