zoukankan      html  css  js  c++  java
  • Django小项目练习

    Django学生管理系统

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    
        url(r'^class_list/', views.class_list),
        url(r'^add_class/', views.add_class),
        url(r'^edit_class/(d+)/', views.edit_class),
    
        url(r'^student_list/', views.student_list),
        url(r'^add_student/', views.add_student),
        url(r'^edit_student/(d+)/', views.edit_student),
    
        url(r'^teacher_list/', views.teacher_list),
        url(r'^add_teacher/', views.add_teacher),
        url(r'^edit_teacher/(d+)/', views.edit_teacher),
    
    ]
    urls.py
    from django.shortcuts import render,redirect,HttpResponse
    from app01 import models
    from django.forms import Form
    from django.forms import fields
    from django.forms import widgets
    from django.forms import models as form_model
    from django.core.exceptions import ValidationError
    from django.core.validators import RegexValidator
    
    
    
    class ClassForm(Form):
        title = fields.RegexField('全栈d+')
    
    def class_list(request):
        cls_list = models.Classes.objects.all()
        return render(request,'class_list.html',{'cls_list':cls_list})
    
    def add_class(request):
        if request.method == "GET":
            obj = ClassForm()
            return render(request,'add_class.html',{'obj': obj})
        else:
            obj = ClassForm(request.POST)
            if obj.is_valid():
                # obj.cleaned_data # 字典
                # 数据库创建一条数据
                # print(obj.cleaned_data)
                # models.Classes.objects.create(title=obj.cleaned_data['tt'])
    
                models.Classes.objects.create(**obj.cleaned_data)
                return redirect('/class_list/')
            return render(request,'add_class.html',{'obj': obj})
    
    def edit_class(request,nid):
        if request.method == "GET":
            row = models.Classes.objects.filter(id=nid).first()
            # 让页面显示初始值
            # obj = ClassForm(data={'title': 'asdfasdfasdfas'})
            obj = ClassForm(initial={'title': row.title})
            return render(request,'edit_class.html',{'nid': nid,'obj':obj})
        else:
            obj = ClassForm(request.POST)
            if obj.is_valid():
                print(obj.cleaned_data)
                models.Classes.objects.filter(id=nid).update(**obj.cleaned_data)
                return redirect('/class_list/')
            return render(request,'edit_class.html',{'nid': nid,'obj':obj})
    
    
    
    class StudentForm(Form):
        name = fields.CharField(
            min_length=2,
            max_length=6,
            widget=widgets.TextInput(attrs={'class': 'form-control'})
        )
        email = fields.EmailField(widget=widgets.TextInput(attrs={'class': 'form-control'}))
        age = fields.IntegerField(min_value=18,max_value=25,widget=widgets.TextInput(attrs={'class': 'form-control'}))
        cls_id = fields.IntegerField(
            # widget=widgets.Select(choices=[(1,'上海'),(2,'北京')])
            widget=widgets.Select(choices=models.Classes.objects.values_list('id','title'),attrs={'class': 'form-control'})
        )
    
    
    def student_list(request):
    
        stu_list = models.Student.objects.all()
        return render(request,'student_list.html',{'stu_list':stu_list})
    
    def add_student(request):
        if request.method == "GET":
            obj = StudentForm()
            return render(request,'add_student.html',{'obj':obj})
        else:
            obj = StudentForm(request.POST)
            if obj.is_valid():
                models.Student.objects.create(**obj.cleaned_data)
                return redirect('/student_list/')
            return render(request,'add_student.html',{'obj':obj})
    
    def edit_student(request,nid):
        if request.method == "GET":
            row = models.Student.objects.filter(id=nid).values('name','email','age','cls_id').first()
            obj = StudentForm(initial=row)
            return render(request,'edit_student.html',{'nid':nid,'obj': obj})
        else:
            obj = StudentForm(request.POST)
            if obj.is_valid():
                models.Student.objects.filter(id=nid).update(**obj.cleaned_data)
                return redirect('/student_list/')
            return render(request,'edit_student.html',{'nid':nid,'obj': obj})
    
    
    class TeacherForm(Form):
        tname = fields.CharField(min_length=2)
        xx = fields.MultipleChoiceField(
            # choices=models.Classes.objects.values_list("id","title"),
            widget=widgets.SelectMultiple
        )
        def __init__(self,*args,**kwargs):
            super(TeacherForm,self).__init__(*args,**kwargs)
            self.fields["xx"].choices =models.Classes.objects.values_list("id","title")
    
    
    
    
    def teacher_list(request):
        tea_list = models.Teacher.objects.all()
        # tea_class = tea_list.c2t.all()
        # print(tea_class)
        return render(request,"teacher_list.html",{"tea_list":tea_list})
    
    def add_teacher(request):
        if request.method == "GET":
            obj = TeacherForm()
            # # print(obj.xx)
            # print(obj.tname)
            return render(request,"add_teacher.html",{"obj":obj})
        else:
            obj = TeacherForm(request.POST)
            if obj.is_valid():
                print(obj.cleaned_data)
                xx = obj.cleaned_data.pop("xx")
                row = models.Teacher.objects.create(**obj.cleaned_data)
                row.c2t.add(*xx)
                return redirect("/teacher_list/")
            return render(request,"add_teacher.html",{"obj":obj})
    
    def edit_teacher(request,tid):
        if request.method == "GET":
            row = models.Teacher.objects.filter(id=tid).first()
            class_ids = row.c2t.values_list("id")
            print(class_ids)
            print(list(zip(*class_ids)))
            id_list = list(zip(*class_ids))[0] if list(zip(*class_ids)) else []
    
            obj = TeacherForm(initial={'tname':row.tname,'xx':id_list})
            return render(request,'edit_teacher.html',{'obj':obj,"tid":tid})
        else:
    
            obj = TeacherForm(request.POST)
            if obj.is_valid():
                print(obj.cleaned_data)
    
                xx = obj.cleaned_data.pop("xx")
                row = models.Teacher.objects.create(**obj.cleaned_data)
                row.c2t.add(*xx)
                return redirect("/teacher_list/")
            else:
                print("111")
                return render(request, 'edit_teacher.html', {'obj': obj, "tid": tid})
    View.py
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>班级列表</h1>
        <div>
            <a href="/add_class/">添加</a>
        </div>
        <ul>
            {% for row in cls_list %}
                <li>{{ row.title }} <a href="/edit_class/{{ row.id }}/">编辑</a>  </li>
            {% endfor %}
        </ul>
    </body>
    </html>
    class_list.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>添加班级</h1>
        <form method="POST" action="/add_class/" novalidate>
            {% csrf_token %}
            {{ obj.title }} {{ obj.errors.title.0 }}
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    add_class.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>编辑班级</h1>
        <form method="POST" action="/edit_class/{{ nid }}/">
            {% csrf_token %}
            <p>
                {{ obj.title }} {{ obj.errors.title.0 }}
            </p>
            <input type='submit' value="提交" />
        </form>
    </body>
    </html>
    edit_class.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>学生列表</h1>
        <a href="/add_student/">添加</a>
        <ul>
            {% for row in stu_list %}
                <li>{{ row.name }}-{{ row.email }}-{{ row.age }}-{{ row.cls_id }}-{{ row.cls.title }}   <a href="/edit_student/{{ row.id }}/">编辑</a></li>
            {% endfor %}
        </ul>
    </body>
    </html>
    student_list.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>添加学生</h1>
        <form action="/add_student/" method="POST">
            {% csrf_token %}
            <p>
                学生名称:{{ obj.name }}
            </p>
            <p>
                学生邮箱:{{ obj.email }}
            </p>
            <p>
                学生年龄:{{ obj.age }}
            </p>
            <p>
                班级:{{ obj.cls_id }}
            </p>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    add_student.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"/>
    </head>
    <body>
    
    
        <div style=" 500px;margin: 0 auto;">
            <form class="form-horizontal" method="POST" action="/edit_student/{{ nid }}/">
                {% csrf_token %}
                <div class="form-group">
                    <label class="col-sm-2 control-label">姓名:</label>
    
                    <div class="col-sm-10">
                        {{ obj.name }}
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">邮箱:</label>
    
                    <div class="col-sm-10">
                        {{ obj.email }}
                    </div>
                </div>
                 <div class="form-group">
                    <label class="col-sm-2 control-label">年龄:</label>
    
                    <div class="col-sm-10">
                        {{ obj.age }}
                    </div>
                </div>
                 <div class="form-group">
                    <label class="col-sm-2 control-label">班级:</label>
    
                    <div class="col-sm-10">
                        {{ obj.cls_id }}
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <input type="submit" class="btn btn-default" value="提交" />
                    </div>
                </div>
            </form>
        </div>
    </body>
    </html>
    edit_student.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>老师列表</h1>
        <div>
            <a href="/add_teacher/">增加</a>
        </div>
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>老师名称</th>
                <th>任教老师</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            {% for row in tea_list %}
                <tr>
                    <td>{{ row.id }}</td>
                    <td>{{ row.tname }}</td>
                    <td>
                        {% for row in row.c2t.all %}
                            {{ row.title }}
                        {% endfor %}
    
                    </td>
                    <td>
                        <a href="/edit_teacher/{{ row.id }}">编辑</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    </body>
    </html>
    teacher.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        <form action="/add_teacher/" method="POST">
            {% csrf_token %}
            <p>
                姓名: {{ obj.tname }}
            </p>
            <p>
                班级 {{ obj.xx }}
            </p>
            <input type="submit" value="提交">
        </form>
    
    
    </body>
    </html>
    add_teacher.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h3>编辑老师</h3>
    
        <form action="/edit_teacher/{{ tid }}/" novalidate method="POST">
            {% csrf_token %}
            <p>
                {{ obj.tname }}
            </p>
            <p>
                {{ obj.xx }}
            </p>
            <input type="submit" value="提交">
        </form>
    </body>
    </html>
    edit_teacheer.html

    Django学生管理系统(使用AJAX实现模态对话框)

     1. 一对一 班级  模态增加 编辑

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
    
            .hide{
                display: none;
            }
            .shadow{
                position: fixed;
                left: 0;
                top: 0;
                right: 0;
                bottom: 0;
                background-color: black;
                opacity: 0.4;
                z-index: 999;
            }
            .modal{
                z-index: 1000;
                position: fixed;
                left: 50%;
                top: 50%;
                height: 300px;
                 400px;
                background-color: white;
                margin-left: -200px;
                margin-top: -150px;
            }
    
            .del_class{
                z-index: 1001;
                position: fixed;
                left: 50%;
                top: 50%;
                height: 150px;
                 300px;
                background-color: white;
                margin-left: -150px;
                margin-top: -75px;
            }
    
            .edit_class{
                z-index: 1002;
                position: fixed;
                left: 50%;
                top: 50%;
                height: 150px;
                 300px;
                background-color: white;
                margin-left: -150px;
                margin-top: -75px;
            }
        </style>
    </head>
    <body>
    
        <h1>班级列表</h1>
    
        <div>
            <a onclick="showModal();">模态框增加</a>
        </div>
    
        <table border="1px">
            <thead>
                <tr>
                    <td>ID</td>
                    <td>班级名称</td>
    
                    <td>模态操作</td>
                </tr>
            </thead>
            <tbody>
                {% for row in data %}
                    <tr>
                        <td>{{ row.cid }}</td>
                        <td>{{ row.title }}</td>
    
                        <td>
                            <a onclick="modelEdit(this)">编辑</a>
                            <a onclick="DelClass({{ row.cid }})">删除</a>
                        </td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    
        {#    遮罩#}
        <div id="shadow" class="shadow hide"></div>
    
        {#    增加#}
        <div id="addmodal" class="modal hide">
            <p>班级名称:
                <input id="addtitle" type="text" name="title" />
            </p>
            <input type="button" value="提交" onclick="AjaxSend();"  /><span id="errormsg"></span>
            <input type="button" value="取消" onclick="cancleModal();" />
        </div>
    
        {#    编辑#}
        <div id="editModal" class="modal hide">
            <h3>编辑</h3>
            <input id="editId" type="text" name="id" style="display: none">
            <p>班级名称<input id="editTitle" type="text" name="title" ></p>
            <input type="button" value="提交" onclick="editAjaxSend()"><span id="errormsg"></span>
            <input type="button" value="取消" onclick="cancleModal()">
        </div>
    
    
        <script src="/static/jquery-3.2.1.js"></script>
    
        <script>
    
    
            {#        增加#}
            function showModal() {
                $("#addmodal,#shadow").removeClass("hide");
            }
    
            function AjaxSend() {
                title=$("#addtitle").val();
                $.ajax({
                    url: '/motai_add_class/',
                    type: 'POST',
                    data: {'title': title},
                    success: function(arg){
                        arg = JSON.parse(arg);
                        if(arg.status){
                            location.reload();
                        }else{
                            alert(arg.message);
                        }
                    }
                })
            }
    
    
            {#        编辑#}
            function modelEdit(self) {
                $("#editModal,#shadow").removeClass("hide");
    
                var title=$(self).parent().prevAll().eq(0).text();
                var id=$(self).parent().prevAll().eq(1).text();
                $("#editTitle").val(title);
                $("#editId").val(id);
            }
    
            function editAjaxSend() {
                id = $("#editId").val();
                title = $("#editTitle").val();
                $.ajax({
                    url: '/modal_edit_class/',
                    type: 'POST',
                    data: {"id":id,"title": title},
                    success: function(arg){
                        arg = JSON.parse(arg);
                        if(arg.status){
                            location.reload();
                        }else{
                            alert(arg.message);
                        }
                    }
                })
            }
    
    
            {#        隐藏#}
            function cancleModal() {
                $("#shadow").addClass("hide");
                $("#addmodal").addClass("hide");
                $("#editModal").addClass("hide")
            }
    
        </script>
    
    
    </body>
    </html>
    classes.html
    def classes(request):
        data = sqlheper.get_list("select cid,title from class",[])
        return render(request, "classes.html", {"data": data})
    
    
    def motai_add_class(request):
        ret = {'status': True, 'message': None}
        title = request.POST.get('title')
        try:
            nid = request.POST.get('nid')
            content = request.POST.get('content')
            sqlheper.motify_sql('insert into class(title) values(%s)',[title,])
        except Exception as e:
            ret['status'] = False
            ret['message'] = "处理异常"
    
        return HttpResponse(json.dumps(ret))
    
    def modal_edit_class(request):
        print(request.POST)
        ret = {'status': True, 'message':None}
        try:
            id = request.POST.get('id')
            title = request.POST.get('title')
            sqlheper.motify_sql('update class set title=%s where cid=%s',[title,id,])
        except Exception as e:
            ret['status'] = False
            ret['message'] = "处理异常"
    
        return HttpResponse(json.dumps(ret))
    views.py

    2.一对多 学生班级  模态增加 编辑

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .hide{
                display: none;
            }
            .shadow{
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                background-color: black;
                z-index: 999;
                opacity: 0.4;
            }
            .Modal{
                position: fixed;
                top: 50%;
                left: 50%;
                 400px;
                height: 300px;
                margin-left: -200px;
                margin-top: -150px;
                z-index: 1000;
                background-color: white;
            }
        </style>
    </head>
    <body>
    
    <h1>班级学员</h1>
    
    <div>
        <a id="addStudent">模态框增加</a>
    </div>
    
    <table border="1px">
        <thead>
            <tr>
                <td>学员名称</td>
                <td>学生名称</td>
                <td>班级名称</td>
                <td>模态操作</td>
            </tr>
        </thead>
        <tbody>
            {% for row in student_list %}
                <tr>
                    <td>{{ row.sid }}</td>
                    <td>{{ row.name }}</td>
                    <td clsId="{{ row.class_id }}">{{ row.title }}</td>
                    <td>
                        <a class="btn-edit">编辑</a>
                        <a >删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    
    <div id="shadow" class="shadow hide"></div>
    
    
    {#增加#}
    <div id="addModal" class="Modal hide">
    
    
        <p>学生名称:
            <input id="add_name" type="text" name="add_name">
        </p>
        <p>学生性别:
            <input id="add_sex" type="text" name="add_sex">
        </p>
        <p>班级名称:
            <select id="add_classId" name="add_classId">
                {% for row in class_list %}
                    <option value="{{ row.cid }}">{{ row.title }}</option>
                {% endfor %}
            </select>
        </p>
    
        <input id="btnAdd" type="button" value="提交"><span id="addError"></span>
        <input id="btnCancle" type="button" value="取消">
    
    </div>
    
    {#编辑#}
    <div id="editModal" class="Modal hide">
        <h3>编辑学生信息</h3>
        <p>
            姓名:<input id="editName" type="text" name="name" placeholder="姓名" />
            <input type="text" id="editId" style="display: none" />
        </p>
        <p>
            班级:
            <select id="editClassId" name="classId">
                {% for row in class_list %}
                    <option value="{{ row.cid }}">{{ row.title }}</option>
                {% endfor %}
            </select>
        </p>
        <input id="btnEdit" type="button" value="更新" />
        <span id="editError" style="color: red;"></span>
        <input id="btnCancle" type="button" value="取消" />
    </div>
    
    <script src="/static/jquery-3.2.1.js"></script>
    
    <script>
    
        $(function () {
    
            {#            增加#}
    
            $("#addStudent").click(function () {
                $("#shadow,#addModal").removeClass("hide");
            });
    
            $("#btnCancle").click(function () {
                $("#shadow,#addModal").addClass("hide");
                $("#editModal").addClass("hide");
            });
    
            $("#btnAdd").click(function () {
                var add_name=$("#add_name").val();
                var add_age=$("#add_sex").val();
                var add_classId=$("#add_classId").val();
                $.ajax({
                    url:"/motai_add_student/",
                    type:"POST",
                    data:{"add_name":add_name,"add_age":add_age,"add_classId":add_classId},
                    success:function (arg) {
                        arg = JSON.parse(arg);
                        if (arg.status){
                            location.reload();
                        }else {
                            $("#addError").text(arg.message);
                        }
                    }
                })
    
            });
    
    
            {#        编辑 #}
            $('.btn-edit').click(function(){
                $('#shadow,#editModal').removeClass('hide');
    
                var tds = $(this).parent().prevAll();
                var studentId = $(tds[2]).text();
                var studentName = $(tds[1]).text();
                var classId = $(tds[0]).attr('clsid');
    
                console.log(studentId,studentName,classId);
    
                $('#editId').val(studentId);
                $('#editName').val(studentName);
                $('#editClassId').val(classId);
            });
    
            $('#btnEdit').click(function(){
                $.ajax({
                    url:'/motai_edit_student/',
                    type: 'POST',
                    data: {'sid': $('#editId').val(), 'name':$('#editName').val(),'class_id': $('#editClassId').val()},
                    dataType: 'JSON', //JSON.parse(arg)
                    success:function(arg){
                        if(arg.status){
                            location.reload();
                        }else{
                            $('#editError').text(arg.message);
                        }
                    }
                })
            });
        })
    
    </script>
    
    </body>
    </html>
    student.html
    def student(request):
        student_list = sqlheper.get_list("select student.sid,student.name,student.class_id,class.title from student left join class on student.class_id=class.cid",[])
    
        class_list = sqlheper.get_list("select cid,title from class",[])
    
        return render(request, "student.html", {"student_list":student_list, "class_list":class_list})
    
    
    def motai_add_student(request):
        print(request.POST)
        ret = {"status":True,"message":None}
        try:
            name = request.POST.get("add_name")
            age = request.POST.get("add_age")
            classId = request.POST.get("add_classId")
    
            sqlheper.motify_sql("insert into student(name,age,class_id) values(%s,%s,%s)",[name,age,classId,])
        except Exception as e:
            ret["status"] = False
            ret["message"] = str(e)
        return HttpResponse(json.dumps(ret))
    
    def motai_edit_student(request):
        ret = {'status': True,'message': None}
        try:
    
            print(request.POST)
            sid = request.POST.get('sid')
            name = request.POST.get('name')
            class_id = request.POST.get('class_id')
            sqlheper.motify_sql('update student set name=%s,class_id=%s where sid=%s',[name,class_id,sid,])
        except Exception as e:
            ret['status'] = False
            ret['message'] = str(e)
        return HttpResponse(json.dumps(ret))
    views.py

    3.多对多 老师 班级  模态增加 编辑

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .hide{
                display: none;
            }
            .shadow{
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                background-color: black;
                z-index: 999;
                opacity: 0.4;
            }
            .Modal{
                position: fixed;
                top: 50%;
                left: 50%;
                 400px;
                height: 300px;
                margin-left: -200px;
                margin-top: -150px;
                z-index: 1000;
                background-color: white;
            }
        </style>
    </head>
    <body>
    
    <h1>老师 班级管理</h1>
    
    <div>
        
        <a id="addModal">模态框增加</a>
    </div>
    
    <table border="solid"  >
        <thead>
            <tr>
                <td>ID</td>
                <td>老师名称</td>
                <td>班级名称</td>
                <td>操作</td>
            </tr>
        </thead>
        <tbody>
            {% for row in teacher_list %}
                <tr>
                    <td>{{ row.tid }}</td>
                    <td>{{ row.name }}</td>
                    <td>
                        {% for item in row.titles %}
                            {{ item }}
                        {% endfor %}
                    </td>
                    <td>
                        <a class="editModal">编辑</a>
                        <a class="delModal">删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    
    </table>
    
    <div id="shadow" class="shadow hide"></div>
    
    <div id="add_tea_cls" class="Modal hide">
    
        <p>老师名称:
            <input id="add_name" type="text" name="add_name">
        </p>
    
        <p>班级名称:
            <select id="add_classId" name="add_classId" multiple>
                {% for row in class_list %}
                    <option value="{{ row.cid }}">{{ row.title }}</option>
                {% endfor %}
            </select>
        </p>
        <input id="btnAdd" type="button" value="提交"><span id="addError"></span>
        <input id="btnCancle" type="button" value="取消">
    
    </div>
    
    <div id="edit_tea_cls" class="Modal hide">
    
        <p>老师名称:
            <input id="add_name" type="text" name="add_name">
        </p>
    
        <p>班级名称:
            <select id="add_classId" name="add_classId" multiple>
                {% for row in class_list %}
                    <option value="{{ row.cid }}">{{ row.title }}</option>
                {% endfor %}
            </select>
        </p>
        <input id="btnEdit" type="button" value="提交"><span id="addError"></span>
        <input id="cacleEdit" type="button" value="取消">
    
    </div>
    
    
    <script src="/static/jquery-3.2.1.js"></script>
    
    <script>
    
        $(function () {
    
    
            {#        增加#}
            $("#addModal").click(function () {
                $("#shadow,#add_tea_cls").removeClass("hide");
            });
    
            $("#btnCancle").click(function () {
                $("#shadow,#add_tea_cls").addClass("hide");
            });
    
    
            $("#btnAdd").click(function () {
                tname=$("#add_name").val();
                class_list=$("#add_classId").val();
                console.log(class_list)
                $.ajax({
                    url:"/new_teacher/",
                    type:"POST",
                    data:{"tname":tname,"class_list":class_list},
                    success:function (arg) {
                        arg = JSON.parse(arg);
                        if (arg.status){
                            location.reload();
                        }else {
                            $("#addError").text(arg.message);
                        }
                    }
                })
            });
    
    
    
            {#        编辑#}
            $(".editModal").click(function () {
                $("#shadow").removeClass("hide");
                $("#edit_tea_cls").removeClass("hide");
            });
    
            $("#cacleEdit").click(function () {
                $("#shadow,#edit_tea_cls").addClass("hide");
            });
    
    
        })
    
    
    
    </script>
    
    
    
    </body>
    </html>
    teacher.html 
    def teacher(request):
    
        teacher_list=sqlheper.get_list("""
        select teacher.tid as tid,teacher.name,class.title from teacher
        left join teacher_class on teacher_class.teacher_id=teacher.tid
        left join class on class.cid=teacher_class.class_id""",[])
        # print(teacher_list)
        result = {}
        for row in teacher_list:
            tid = row["tid"]
            if tid in result:
                result[tid]["titles"].append(row["title"])
            else:
                result[tid] = {"tid":row["tid"],"name":row["name"],"titles":[row["title"],]}
    
        class_list = sqlheper.get_list("select cid,title from class",[])
    
        return render(request, "teacher.html_模态增加 老师班级", {"teacher_list":result.values(), "class_list":class_list})
    
    ###模态增加
    def new_teacher(request):
        print(request.POST)
        ret = {'status': True, 'message': None}
        try:
            class_list=request.POST.getlist("class_list[]")
            tname=request.POST.get("tname")
            print(class_list)
            print(tname)
            teacher_id=sqlheper.get_IncrementId("insert into teacher(name) values(%s)",[tname,])
            for item in class_list:
                sqlheper.motify_sql("insert into teacher_class(teacher_id,class_id) values(%s,%s)",[teacher_id,item,])
        except Exception as e:
            ret['status'] = False
            ret['message'] = str(e)
        return HttpResponse(json.dumps(ret))
    views.py

    4.多对多 老师 班级  新url  增加 编辑

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    
    <h1>老师 班级管理</h1>
    
    <div>
    
        <a href="/add_page_teacher/">增加</a>
    </div>
    
    <table border="solid"  >
        <thead>
            <tr>
                <td>ID</td>
                <td>老师名称</td>
                <td>班级名称</td>
                <td>操作</td>
            </tr>
        </thead>
        <tbody>
            {% for row in teacher_list %}
                <tr>
                    <td>{{ row.tid }}</td>
                    <td>{{ row.name }}</td>
                    <td>
                        {% for item in row.titles %}
                            {{ item }}
                        {% endfor %}
                    </td>
                    <td>
                        <a href="/edit_page_teacher/?tid={{ row.tid }}">编辑</a>
                        <a >删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    
    </table>
    
    
    </body>
    </html>
    teacher.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <h1>增加老师</h1>
    
    <form action="/add_teacher/" method="POST">
        <p>老师名称: <input type="text" name="name"></p>
        <input type="submit">
    </form>
    
    </body>
    </html>
    add_page_teacher.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <h3>编辑老师班级</h3>
    
    
    <form action="/edit_page_teacher/?tnid={{ tname.tid }}" method="post">
    
        <p>老师名称:<input type="text" name="name" value="{{ tname.name }}"></p>
    
        <p>班级名称:
        <select name="class_ids" multiple size="7">
            {% for item in class_list %}
                {% if item.cid in class_ids %}
                    <option selected value="{{ item.cid }}">{{ item.title }}</option>
                {% else %}
                    <option value="{{ item.cid }}">{{ item.title }}</option>
                {% endif %}
            {% endfor %}
        </select>
    
        <p><input type="submit" value="提交"></p>
        </p>
    
    </form>
    
    
    </body>
    </html>
    edit_page_teacher.html
    ###网页显示
    def teacher(request):
    
        teacher_list=sqlheper.get_list("""
        select teacher.tid as tid,teacher.name,class.title from teacher
        left join teacher_class on teacher_class.teacher_id=teacher.tid
        left join class on class.cid=teacher_class.class_id""",[])
        # print(teacher_list)
        result = {}
        for row in teacher_list:
            tid = row["tid"]
            if tid in result:
                result[tid]["titles"].append(row["title"])
            else:
                result[tid] = {"tid":row["tid"],"name":row["name"],"titles":[row["title"],]}
    
        class_list = sqlheper.get_list("select cid,title from class",[])
    
        return render(request, "teacher.html", {"teacher_list":result.values(), "class_list":class_list})
    
    
    ###网页增加
    def add_page_teacher(request):
        if request.method=="GET":
            obj = sqlheper.SqlHelper()
            class_list = obj.get_list("select cid,title from class",[])
            obj.close()
            return render(request,"add_page_teacher.html",{"class_list":class_list})
        else:
    
            name = request.POST.get("name")
            obj = sqlheper.SqlHelper()
            teacher_id = obj.get_lastrowid("insert into teacher(name) values(%s)",[name,])
            obj.close()
    
    
            class_ids = request.POST.getlist("class_ids")
            print(class_ids)
    
            data_list = []
            for cls_id in class_ids:
                temp = (teacher_id, cls_id,)
                data_list.append(temp)
    
            obj = sqlheper.SqlHelper()
            obj.multiple_modify('insert into teacher_class(teacher_id,class_id) values(%s,%s)', data_list)
            obj.close()
            return redirect('/teacher/')
    
    
    ###网页编辑
    def edit_page_teacher(request):
        if request.method=="GET":
            teacher_id = request.GET.get("tid")
            obj = sqlheper.SqlHelper()
            tname = obj.get_one("select tid,name from teacher where tid=%s",[teacher_id,])
    
    
            class_list = obj.get_list("select cid,title from class",[])
    
            class_ids = obj.get_list("select class_id from teacher_class where teacher_id =%s",[teacher_id,])
            obj.close()
    
            temp = []
            for i in class_ids:
                temp.append(i['class_id'])
    
            return render(request,"edit_page_teacher.html",{
                "tname":tname,
                "class_list":class_list,
                "class_ids":temp,
            })
        else:
            tid=request.GET.get("tnid")
            name=request.POST.get("name")
            class_ids=request.POST.getlist("class_ids")
    
            obj = sqlheper.SqlHelper()
            obj.modify("update teacher set name=%s where tid=%s",[name,tid,])
            obj.modify('delete from teacher_class where teacher_id=%s',[tid,])
            data_list = []
            for cls_id in class_ids:
                temp = (tid,cls_id)
                data_list.append(temp)
            obj.multiple_modify('insert into teacher_class(teacher_id,class_id) values(%s,%s)',data_list)
            obj.close()
            return redirect('/teacher/')
    views.py

    5.多对多 老师 班级 模态  增加 编辑

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .hide{
                display: none;
            }
            .shadow{
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                background-color: black;
                z-index: 999;
                opacity: 0.4;
            }
            .loading{
                position: fixed;
                 32px;
                height: 32px;
                left: 50%;
                top:50%;
                margin-left: -16px;
                margin-top: -16px;
                background-color: rebeccapurple;
                background-image: url("/static/images/loading.gif") ;
                background-size: 100%;
    
            }
            .Modal{
                position: fixed;
                top: 50%;
                left: 50%;
                 400px;
                height: 300px;
                margin-left: -200px;
                margin-top: -150px;
                z-index: 1000;
                background-color: white;
            }
        </style>
        <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css">
        <link rel="stylesheet" href="/static/plugins/font-awesome-4.7.0/css/font-awesome.css">
    </head>
    <body>
    
    <h1 >老师 班级管理</h1>
    
    <div class="btn btn-success">
    
        <a id="addModal">模态框增加</a>
    </div>
    
    <table border="solid" class="table table-striped">
        <thead>
            <tr>
                <td>ID</td>
                <td>老师名称</td>
                <td>班级名称</td>
                <td>操作</td>
            </tr>
        </thead>
        <tbody>
            {% for row in teacher_list %}
                <tr>
                    <td>{{ row.tid }}</td>
                    <td>{{ row.name }}</td>
                    <td>
                        {% for item in row.titles %}
                            {{ item }}
                        {% endfor %}
                    </td>
                    <td>
                        <a class="editModal">编辑</a>
                        <a class="delModal">删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    
    </table>
    
    <div id="shadow" class="shadow hide"></div>
    
    <div id="loading" class="loading hide"></div>
    
    <div id="add_tea_cls" class="Modal hide">
    
        <p>老师名称:
            <input id="add_name" type="text" name="add_name">
        </p>
    
        <p>班级名称:
            <select id="add_classId" name="add_classId" multiple size="10">
    
            </select>
        </p>
        <input id="btnAdd" type="button" value="提交"><span id="addError"></span>
        <input id="btnCancle" type="button" value="取消">
    
    </div>
    
    <div id="edit_tea_cls" class="Modal hide">
        <input type="text" id="hide_id" style="display: none">
    
        <p>老师名称:
            <input id="edit_name" type="text" name="add_name">
        </p>
    
        <p>班级名称:
            <select id="edit_classId" name="edit_classId" multiple size="10">
    
            </select>
        </p>
        <input id="btnEdit" type="button" value="提交"><span id="addError"></span>
        <input id="cacleEdit" type="button" value="取消">
    
    </div>
    
    
    <script src="/static/jquery-3.2.1.js"></script>
    
    <script>
    
        $(function () {
    
    
            {#        增加#}
            $("#addModal").click(function () {
                $("#shadow,#loading").removeClass("hide");
                $.ajax({
                    url:"/get_all_class/",
                    type:"GET",
                    dataType:"JSON",
                    success:function (arg) {
                        $.each(arg,function (i,row) {
                            var tag = $("<option>");        /*var tag = document.createElement('option');*/
                            tag.text(row.title);            /*tag.innerHTML = row.title;*/
                            tag.prop("value",row.cid);
                            $("#add_classId").append(tag);  /*tag.setAttribute('value',row.id);*/
                        });
                        $('#loading').addClass('hide');
                        $('#add_tea_cls').removeClass('hide');
                    }
                })
            });
    
            $("#btnCancle").click(function () {
                $("#shadow,#add_tea_cls").addClass("hide");
            });
    
            $("#btnAdd").click(function () {
                var tname=$("#add_name").val();
                var class_list=$("#add_classId").val();
                console.log(class_list);
                $.ajax({
                    url:"/new_teacher/",
                    type:"POST",
                    data:{"tname":tname,"class_list":class_list},
                    dataType:"JSON",
                    traditional: true, // 如果提交的数据的值有列表,则需要添加此属性
                    success:function (arg) {
    
                        if (arg.status){
                            location.reload();
                        }else {
                            alert(arg.message);
                        }
                    }
                })
            });
    
    
    
            {#        编辑#}
            $(".editModal").click(function () {
                $("#shadow,#loading").removeClass("hide");
                var ids=$(this).parent().prevAll()[2];
                var id=$(ids).text();
                $("#hide_id").val(id);
                $.ajax({
                    url: "/edit_tea_cls/",
                    type: "POST",
                    dataType: "JSON",
                    data:{"id":id},
                    success: function (arg) {
    
                        class_list = arg[0];
                        teacher_info = arg[1];
                        class_lds = arg[2];
                        console.log(class_lds);
                        $("#edit_classId").empty();
                        $.each(class_list, function (i, row) {
                            var tag = $("<option>");
                            tag.text(row.title);
                            tag.prop("value", row.cid);
    
                            if(class_lds.indexOf(row.cid) == -1){
                                $("#edit_classId").append(tag);
                            }else {
                                tag.prop("selected","selected");
                                $("#edit_classId").append(tag);
                            }
                        });
                        $("#edit_name").val(teacher_info["name"]);
    
    
    
    
    
    
    
                        $('#loading').addClass('hide');
                        $('#edit_tea_cls').removeClass('hide');
                    }
                });
    
                $("#cacleEdit").click(function () {
                    $("#shadow,#edit_tea_cls").addClass("hide");
                });
            })
    
            {#        编辑提交#}
            $("#btnEdit").click(function () {
                var tid= $("#hide_id").val();
                var name = $("#edit_name").val();
                var class_ids = $("#edit_classId").val();
                $.ajax({
                    url:"/modal_edit_teacher/",
                    type:"post",
                    dataType:"JSON",
                    traditional:true,
                    data:{"tid":tid,"name":name,"del_class_id":del_class_id},
                    $.ajax({
                    url:"/modal_edit_teacher/",
                    type:"post",
                    dataType:"JSON",
                    traditional:true,
                    data:{"tid":tid,"name":name,"class_ids":class_ids},
                    success:function (arg) {
                        if (arg.status){
                            location.reload();
                        }else {
                            alert("111")
                        }
                    }
                })
                })
            })
        })
    
    
    </script>
    
    </body>
    </html>
    teacher.html
    #显示
    def teacher(request):
    
        tk = request.COOKIES.get("ticket")
        if not tk:
            return redirect("/login/")
    
        teacher_list=sqlheper.get_list("""
        select teacher.tid as tid,teacher.name,class.title from teacher
        left join teacher_class on teacher_class.teacher_id=teacher.tid
        left join class on class.cid=teacher_class.class_id""",[])
        # print(teacher_list)
        result = {}
        for row in teacher_list:
            tid = row["tid"]
            if tid in result:
                result[tid]["titles"].append(row["title"])
            else:
                result[tid] = {"tid":row["tid"],"name":row["name"],"titles":[row["title"],]}
    
    
        return render(request, "teacher.html", {"teacher_list":result.values()})
    
    #增加
    def get_all_class(request):
        import time
        time.sleep(1)
        obj = sqlheper.SqlHelper()
        class_list = obj.get_list('select cid,title from class',[])
        obj.close()
        return HttpResponse(json.dumps(class_list))
    
    def new_teacher(request):
    
        ret = {'status': True, 'message': None}
        try:
            class_list=request.POST.getlist("class_list")
            tname=request.POST.get("tname")
            teacher_id=sqlheper.get_IncrementId("insert into teacher(name) values(%s)",[tname,])
    
            data_list = []
            for cls_id in class_list:
                temp = (teacher_id,cls_id,)
                data_list.append(temp)
    
            obj = sqlheper.SqlHelper()
            obj.multiple_modify('insert into teacher_class(teacher_id,class_id) values(%s,%s)', data_list)
            obj.close()
        except Exception as e:
            ret['status'] = False
            ret['message'] = str(e)
        return HttpResponse(json.dumps(ret))
    
    
    #编辑
    def edit_tea_cls(request):
    
        id = request.POST.get("id")
        obj = sqlheper.SqlHelper()
        class_list = obj.get_list('select cid,title from class',[])
    
        teacher_info = obj.get_one("select tid,name from teacher where tid=%s",[id,])
    
        class_id = obj.get_list("select class_id from teacher_class where teacher_id=%s",[id,])
    
        data_list = []
        for cls_id in class_id:
            data_list.append(cls_id["class_id"])
    
    
    
        print(teacher_info)
        total = []
        total.append(class_list)
        total.append(teacher_info)
        total.append(data_list)
        obj.close()
        return HttpResponse(json.dumps(total))
    
    def modal_edit_teacher(request):
        ret = {'status': True, 'message': None}
        try:
            name = request.POST.get("name")
            tid = request.POST.get("tid")
            class_ids = request.POST.getlist("class_ids")
    
    
            obj = sqlheper.SqlHelper()
            obj.modify("update teacher set name=%s where tid=%s", [name, tid, ])
            obj.modify('delete from teacher_class where teacher_id=%s', [tid, ])
            data_list = []
            for cls_id in class_ids:
                temp = (tid, cls_id)
                data_list.append(temp)
            obj.multiple_modify('insert into teacher_class(teacher_id,class_id) values(%s,%s)', data_list)
            obj.close()
        except Exception as e:
            ret['status'] = False
            ret['message'] = str(e)
        return HttpResponse(json.dumps(ret))
    views.py

    Django 相亲小项目

    用户登录  如果男用户登录,显示女生列表

              如果女用户登录,显示男生列表
    from django.shortcuts import render,HttpResponse,redirect
    from app01 import models
    
    
    
    def login(request):
        if request.method == "GET":
            return render(request,"login.html")
        else:
            username = request.POST.get("username")
            password = request.POST.get("password")
            gender = request.POST.get("gender")
            if gender == "1":
                 obj = models.Boy.objects.filter(username=username,password=password).first()
            else:
                obj = models.Girl.objects.filter(username=username,password=password).first()
            if not obj:
                #未登录
                return render(request,"login.html",{"msg":"用户名或密码错误"})
            else:
                request.session["user_info"] = {"user_id":obj.id,"gender":gender,"username":username,"nickname":obj.nickname}
            return redirect("/index.html")
    
    
    
    def logout(request):
        if request.session.get("user_info"):
            request.session.clear()
        return redirect("/login.html")
    views/account.py
    from django.shortcuts import render,HttpResponse,redirect
    from app01 import models
    
    
    def index(request):
        if not request.session.get("user_info"):
            return redirect("/login.html")
        else:
            gender = request.session.get("user_info").get("gender")
            if gender == "1":
                user_list = models.Girl.objects.all()
            else:
                user_list = models.Boy.objects.all()
            return render(request,"index.html",{"user_list":user_list})
    
    
    def others(request):
    
        current_user_id = request.session.get("user_info").get("user_id")
        gender = request.session.get("user_info").get("gender")
        if gender == "1":
            user_list = models.B2G.objects.filter(b_id=current_user_id).values("g__nickname")
        else:
            user_list = models.B2G.objects.filter(g_id=current_user_id).values("b__nickname")
        return render(request,"other.html",{"user_list":user_list})
    
    
    
    def test(request):
    
        # models.Boy.objects.create(nickname="方少伟",username="fsw",password="123")
        # models.Boy.objects.create(nickname="陈涛",username="ct",password="123")
        # models.Boy.objects.create(nickname="egon",username="egon",password="123")
        #
        # models.Girl.objects.create(nickname="lili", username="lili", password="123")
        # models.Girl.objects.create(nickname="jim", username="jim", password="123")
        # models.Girl.objects.create(nickname="xiaojie", username="xiaojie", password="123")
    
        # models.B2G.objects.create(b_id=1,g_id=1)
        # models.B2G.objects.create(b_id=1,g_id=2)
        # models.B2G.objects.create(b_id=1,g_id=3)
        # models.B2G.objects.create(b_id=2,g_id=1)
        # models.B2G.objects.create(b_id=3,g_id=1)
        # models.B2G.objects.create(b_id=4,g_id=1)
    
        return HttpResponse("...")
    views/love.py
    from django.db import models
    
    # Create your models here.
    
    
    class Boy(models.Model):
        nickname = models.CharField(max_length=32)
        username = models.CharField(max_length=32)
        password = models.CharField(max_length=64)
    
    class Girl(models.Model):
        nickname = models.CharField(max_length=32)
        username = models.CharField(max_length=32)
        password = models.CharField(max_length=64)
    
    
    class B2G(models.Model):
        b = models.ForeignKey(to="Boy",to_field="id")
        g = models.ForeignKey(to="Girl",to_field="id")
    models.py
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    
        url(r'^test.html$', love.test),
    
    
        url(r'^login.html$', account.login),
        url(r'^logout.html$', account.logout),
    
        url(r'^index.html$', love.index),
        url(r'^others.html$', love.others),
    
    ]
    urls.py
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        <form action="/login.html" method="POST">
            {% csrf_token %}
            <p>用户:<input type="text" name="username"></p>
            <p>密码:<input type="password" name="password"></p>
            <p>
                性别:
                    男<input type="radio" name="gender" value="1"><input type="radio" name="gender" value="2">
            </p>
    
            <input type="submit" value="提交">{{ msg }}
        </form>
    
    
    </body>
    </html>
    login.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    {% include "user_head.html" %}
    
    
    <h3>异性列表</h3>
    <a href="/others.html">查看和我有关系的异性</a>
    <ul>
        {% for row in user_list %}
            <li>{{ row.nickname }}</li>
        {% endfor %}
    </ul>
    
    </body>
    </html>
    index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        {% include "user_head.html" %}
    
    
        <h3>有关系的异性列表</h3>
        <ul>
            {% for row in user_list %}
                {% if  row.g__nickname %}
                    <li>{{ row.g__nickname }}</li>
                {% else %}
                    <li>{{ row.b__nickname }}</li>
                {% endif %}
            {% endfor %}
        </ul>
    
    
    </body>
    </html>
    other.html
    <h3>当前用户: {{ request.session.user_info.nickname }}</h3>
    <a href="/logout.html">注销</a>
    user_head.html
  • 相关阅读:
    javascript 3秒钟后自动跳转到前一页面
    meta
    HTML 5 label
    WCF的ABC
    由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
    ECMASCRIPT5新特性(转载)
    bin目录正.pdb是什么文件?
    PS切图的相关技巧
    MongoVUE破解方法
    ASP.NET MVC Area操作
  • 原文地址:https://www.cnblogs.com/xuyaping/p/7140631.html
Copyright © 2011-2022 走看看