Frank的学习之路

Day_18_总结_django初始化配置

快捷键使用:

Ctrl +D  //复制选定的区域或行

Ctrl +Y  //删除选定的行    

创建项目方式:

-命令行创建:

     django-admin startproject myweb

-启动django:

-命令行运行项目:

     python3 manage.py runserver 127.0.0.1 8005


django初始化配置:


-myweb-settings配置:


STATICFILES_DIRS=(
    os.path.join(BASE_DIR,'static'),
)

MIDDLEWARE = [

     # 'django.middleware.csrf.CsrfViewMiddleware',  //需要注释

]


创建存储静态文件目录:

    -static-css

    -static-images

    -static-js

    js文件夹导入jquery.js


-myweb-urls.py

from django.shortcuts import render def test(request):     name='Frank'     li=['frank','sunny','franksunny']     dic={'name':'frank','age':18}     info=[         {'id':1,'name':'frank','age':17},         {'id':2,'name':'sunny','age': 18},         {'id':3,'name':'franksunny','age': 19}     ]     return render(request,'test.html',{'name':name,'li':li,'dic':dic,'info':info})



urlpatterns = [     # url(r'^admin/', admin.site.urls),     url('test/',test),

]


-templates-test.html

<head>     <meta charset="UTF-8">     <title>Title</title>     <script src="/static/js/jquery.js"></script> </head> <body> <h4>名字显示</h4> {{ name }} <h4>列表显示</h4>     <ul>         <li>{{ li.0 }}</li>         <li>{{ li.1 }}</li>         <li>{{ li.2 }}</li>     </ul> <h4>字典显示</h4>     <ul>         <li>{{dic.name}}</li>         <li>{{dic.age}}</li>     </ul> <h4>列表字典嵌套显示</h4> <table border="1px" style="color: blue">     <tr>         <th>id</th>         <th>姓名</th>         <th>年龄</th>     </tr>     {% for item in info %}         <tr>             <td>{{ item.id }}</td>             <td>{{ item.name }}</td>             <td>{{ item.age }}</td>         </tr>     {% endfor %} </table> </body>


要求:学校后台管理系统

classes

      id classname

       1  周末一期

       2  脱产一期


students

      id stuname classid

       1   frank    1

       2   sunny    2

       

teacher

      id teachername

       1    eagon

       2    szk

       

teacher2classes

      id tid cid

       1  1   1

       2  1   2

       3  2   1

       

班级管理:

      单表操作:

      单表增删改查

     

      一对多操作:

      增删改查

     

      多对多操作

      增删改查


classesstudentsteacherteacher2classes建表语句:

create table classes (

id int not null primary key auto_increment,

classname varchar(32) not null default ''

)engine=Innodb charset=utf8;


     create table students (

id int not null primary key auto_increment,

     name varchar(32) not null default '',

     classId int not null default 0,

     constraint `fk_1` foreign key (classId) references classes(id)

     )engine=Innodb charset=utf8;


 create table teacher (

     id int not null primary key auto_increment,

     name varchar(32) not null default ''

     )engine=Innodb charset=utf8;


create table teacher2class(

id int not null primary key auto_increment,

tid int not null default 0,

cid int not null default 0,

constraint `fk_2` foreign key (tid) references teacher(id),

constraint `fk_3` foreign key (cid) references classes(id)


)engine=Innodb charset=utf8;


.代码第一层

利用pymysql和页面跳转做的CRUD

1.显示班级

2.添加班级

3.删除班级

4.更新班级


[1].-myweb-urls.py

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import render
from app01 import views


urlpatterns = [
    url(r'^test/',views.test),
    url(r'^classes/', views.classes),
    url(r'^add_class/', views.add_class),
    url(r'^del_class/', views.del_class),
    url(r'^edit_class/', views.edit_class),
]


[2].-app01-views.py

from django.shortcuts import render,redirect
import pymysql

def test(request):
    name='Frank'
   
li=['frank','sunny','franksunny']
    dic={'name':'frank','age':18}
    info=[
        {'id':1,'name':'frank','age':17},
        {'id':2,'name':'sunny','age': 18},
        {'id':3,'name':'franksunny','age': 19}
    ]
    return render(request,'test.html',{'name':name,'li':li,'dic':dic,'info':info})

def add_class(request):
    if request.method=='GET':
        return render(request, 'add_class.html')
    else:
        classname=request.POST.get('classname')
        print(classname)
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        print(cursor)
        cursor.execute('insert into classes (classname) values (%s)', (classname))
        conn.commit()
        return redirect('/classes/')

def del_class(request):
    cid=request.GET.get('cid')
    print(cid)
    conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    print(cursor)
    cursor.execute('delete from classes where id=%s', (cid))
    conn.commit()
    return redirect('/classes/')

def edit_class(request):
    if request.method=='GET':
        cid=request.GET.get('cid')
        print(cid)
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('select * from classes where id=%s', (cid))
        res=cursor.fetchone()
        return render(request,'edit_class.html',{'classinfo':res})
    else:
        classname=request.POST.get('classname')
        cid=request.POST.get('cid')
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('update classes set classname=%s where id=%s', (classname,cid))
        conn.commit()
        return redirect('/classes/')

def classes(request):
    conn=pymysql.connect(host='192.168.10.5',user='root',passwd='123456',db='day18',charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from classes',())
    res=cursor.fetchall()
    print(res)
    return render(request,'classes.html',{'class_list':res})


[3].-templates-classes.html

<body>
<h4>我是班级列表</h4>
<a href="/add_class/">添加班级</a>
<table border="1px" style="color: red">
    <tr>
        <th>班级ID</th>
        <th>班级课程</th>
        <th>操作</th>
    </tr>

    {% for item in class_list  %}
        <tr>
            <td>{{ item.id}}</td>
            <td>{{ item.classname}}</td>
            <td><a href="/del_class/?cid={{ item.id }}" onclick="return doConfirm()">删除</a></td>
            <td><a href="/edit_class/?cid={{ item.id }}">更新</a></td>
        </tr>
    {% endfor %}
</table>
<script>
    function doConfirm() {
        res=window.confirm('请确认是否删除')
        if (res){
            return true
       
}else {
            return false
       
}

    }
</script>
</body>


[4].-templates-add_class.html

<body>
    <h4>添加班级</h4>
    <form action="/add_class/" method="post">
        <input type="text" name="classname" placeholder="请输入班级名称">
        <input type="submit" value="提交">
    </form>
</body>


[5].-templates-edit_class.html

<body>
    <h4>更新班级</h4>
    <form action="/edit_class/" method="post">
        <input type="hidden" name="cid" value="{{ classinfo.id }}">
        <input type="text" name="classname" value="{{ classinfo.classname }}">
        <input type="submit" value="提交">

    </form>
</body>


.代码第二层

利用pymysql和模态框做的CRUD


[1].-myweb-urls.py


from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import render
from app01 import views

urlpatterns = [
    url(r'^test/',views.test),
    url(r'^classes/', views.classes),
    url(r'^add_class/', views.add_class),
    url(r'^del_class/', views.del_class),
    url(r'^edit_class/', views.edit_class),
    url(r'^ajax_add_classes/', views.ajax_add_classes),
]


[2].-app01-views.py


from django.shortcuts import render,redirect,HttpResponse
import pymysql

def test(request):
    name='Frank'
   
li=['frank','sunny','franksunny']
    dic={'name':'frank','age':18}
    info=[
        {'id':1,'name':'frank','age':17},
        {'id':2,'name':'sunny','age': 18},
        {'id':3,'name':'franksunny','age': 19}
    ]
    return render(request,'test.html',{'name':name,'li':li,'dic':dic,'info':info})

def add_class(request):
    if request.method=='GET':
        return render(request, 'add_class.html')
    else:
        classname=request.POST.get('classname')
        print(classname)
        if len(classname) >0:
            conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
            print(cursor)
            cursor.execute('insert into classes (classname) values (%s)', (classname))
            conn.commit()
            return redirect('/classes/')

def ajax_add_classes(request):
    classname = request.POST.get('classname')
    print(classname)
    if len(classname) > 0:
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        print(cursor)
        cursor.execute('insert into classes (classname) values (%s)', (classname))
        conn.commit()
        return HttpResponse('ok')
    else:
        return HttpResponse('班级名为空')

def del_class(request):
    cid=request.GET.get('cid')
    print(cid)
    conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    print(cursor)
    cursor.execute('delete from classes where id=%s', (cid))
    conn.commit()
    return redirect('/classes/')

def edit_class(request):
    if request.method=='GET':
        cid=request.GET.get('cid')
        print(cid)
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('select * from classes where id=%s', (cid))
        res=cursor.fetchone()
        return render(request,'edit_class.html',{'classinfo':res})
    else:
        classname=request.POST.get('classname')
        cid=request.POST.get('cid')
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('update classes set classname=%s where id=%s', (classname,cid))
        conn.commit()
        return redirect('/classes/')

def classes(request):
    conn=pymysql.connect(host='192.168.10.5',user='root',passwd='123456',db='day18',charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from classes',())
    res=cursor.fetchall()
    print(res)
    return render(request,'classes.html',{'class_list':res})


[3].-templates-classes.html


<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <style>
       .shadow{
            position: absolute;
            bottom: 0;
            top: 0;
            left: 0;
            right: 0;
            background-color: black;
            opacity: 0.4;
            z-index: 9;
        }
        .addModal{
            position: absolute;
            top:25%;
            left:35%;
            background-color: white;
            width:500px;
            height:300px;
            z-index: 10;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<h4>我是班级列表</h4>
<a href="/add_class/">添加班级</a>
<a id="ajax_add_btn">模态框添加班级</a>
<table border="1px" style="color: red">
    <tr>
        <th>班级ID</th>
        <th>班级课程</th>
        <th>操作</th>
    </tr>

    {% for item in class_list  %}
        <tr>
            <td>{{ item.id}}</td>
            <td>{{ item.classname}}</td>
            <td><a href="/del_class/?cid={{ item.id }}" onclick="return doConfirm()">删除</a></td>
            <td><a href="/edit_class/?cid={{ item.id }}">更新</a></td>
        </tr>
    {% endfor %}
</table>

<div class="shadow hide " id="shadow"></div>
<div class="addModal hide" id="modal">
    <form >
        <p><input type="text" name="classname" id="classname" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_add_send"><span id="hint" style="color: red"></span>
            <input type="button" value="取消" id="cancelBtn"> </p>
    </form>
</div>

</body>


<script>
    function doConfirm() {
        res=window.confirm('请确认是否删除')
        if (res){
            return true
       
}else {
            return false
       
}
    }

    $('#ajax_add_btn').click(function () {
        $('.shadow,.addModal').show()
    })
    $('#cancelBtn').click(function () {
        $('.shadow,.addModal').hide()
    })

    $('#ajax_add_send').click(function () {
        $.ajax({
            url:'/ajax_add_classes/',
            type:"POST",
            data:{"classname":$('#classname').val()},

            success:function (args) {
                console.log(args)
                if(args=='ok'){
                    window.location.href='/classes/'
               
}else {
                    $('#hint').text(args)
                }

            }
        })
    })
</script>


.代码第三层

使用ajax做更新操作,异常处理方法

[1].-myweb-urls.py

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import render
from app01 import views


urlpatterns = [
    url(r'^classes/', views.classes),
    url(r'^del_class/', views.del_class),
    url(r'^ajax_add_classes/', views.ajax_add_classes),
    url(r'^ajax_edit_class/', views.ajax_edit_class),
]


[2].-app01-views.py

import json
from django.shortcuts import render,redirect,HttpResponse
import pymysql

def ajax_add_classes(request):
    classname = request.POST.get('classname')
    print(classname)
    if len(classname) > 0:
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        print(cursor)
        cursor.execute('insert into classes (classname) values (%s)', (classname))
        conn.commit()
        return HttpResponse('ok')
    else:
        return HttpResponse('班级名为空')

def del_class(request):
    cid=request.GET.get('cid')
    print(cid)
    conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    print(cursor)
    cursor.execute('delete from classes where id=%s', (cid))
    conn.commit()
    return redirect('/classes/')

def ajax_edit_class(request):
    classname = request.POST.get('classname')
    cid=request.POST.get('cid')
    print(classname)
    try:
        if len(classname) > 0:
            conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
            print(cursor)
            cursor.execute('update classes set classname=%s where id=%s', (classname,cid))
            conn.commit()
            dict={'code':10000,'msg':'添加成功'}
            return HttpResponse(json.dumps(dict))

    except Exception as e:
        dict = {'code':10001, 'msg':'添加失败'}
        return HttpResponse(json.dumps(dict))


def classes(request):
    conn=pymysql.connect(host='192.168.10.5',user='root',passwd='123456',db='day18',charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from classes',())
    res=cursor.fetchall()
    print(res)
    return render(request,'classes.html',{'class_list':res})


[3].-templates-classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <style>
       .shadow{
            position: absolute;
            bottom: 0;
            top: 0;
            left: 0;
            right: 0;
            background-color: black;
            opacity: 0.4;
            z-index: 9;
        }
        .addModal,.edit_Modal{
            position: absolute;
            top:25%;
            left:35%;
            background-color: white;
            width:500px;
            height:300px;
            z-index: 10;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<a id="ajax_add_btn">模态框添加班级</a>
<table border="1px" style="color: red">
    <tr>
        <th>班级ID</th>
        <th>班级课程</th>
        <th>操作</th>
    </tr>

    {% for item in class_list  %}
        <tr>
            <td>{{ item.id}}</td>
            <td>{{ item.classname}}</td>
            <td>
                <a href="/del_class/?cid={{ item.id }}" onclick="return doConfirm()">删除</a>
                <a class="ajax_edit_btn">ajax更新</a>
            </td>
        </tr>
    {% endfor %}
</table>

<div class="shadow hide " id="shadow"></div>

<div class="addModal hide" id="modal">
    <form >
        <p><input type="text" name="classname" id="classname" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_add_send"><span id="hint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

<div class="edit_Modal hide" >
    <form>
        <input type="hidden" id="ajax_hide_id">
        <p><input type="text" name="classname" id="editClassName" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_edit_send"><span id="edithint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

</body>
<script>
    function doConfirm() {
        res=window.confirm('请确认是否删除')
        if (res){
            return true
       
}else {
            return false
       
}
    }

    $('#ajax_add_btn').click(function () {
        $('.shadow,.addModal').show()
    })
    $('.cancelBtn').click(function () {
        $('.shadow,.addModal,.edit_Modal').hide()
    })

    $('#ajax_add_send').click(function () {
        $.ajax({
            url:'/ajax_add_classes/',
            type:"POST",
            data:{"classname":$('#classname').val()},

            success:function (args) {
                console.log(args)
                if(args=='ok'){
                    window.location.href='/classes/'
               
}else {
                    $('#hint').text(args)
                }
            }
        })
    })

    $('.ajax_edit_btn').click(function () {
        $('.edit_Modal,.shadow').show();
        var v=$(this).parent().prevAll()
        $('#editClassName').val($(v[0]).text())
        $('#ajax_hide_id').val($(v[1]).text())
    })

    $('#ajax_edit_send').click(function () {
        var classname=$('#editClassName').val()
        var cid=$('#ajax_hide_id').val()
        console.log(classname+cid)
        $.ajax({
            url:'/ajax_edit_class/',
            type:"POST",
            data:{"classname":classname,"cid":cid},

            success:function (args) {
                console.log(args)
                res=JSON.parse(args)
                console.log(res)
                if (res['code']==10000){
                    location.reload();
                }else {
                    $('#edithint').text(res['msg'])
                }

            }
        })
    })

</script>
</html>


.代码第四层

    优化数据调用接口,展示students表查询和展示数据

[1].-myweb-urls.py

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import render
from app01 import views


urlpatterns = [
    url(r'^classes/', views.classes),
    url(r'^del_class/', views.del_class),
    url(r'^ajax_add_classes/', views.ajax_add_classes),
    url(r'^ajax_edit_class/', views.ajax_edit_class),
    url(r'^students/', views.students),
]

[2].-app01-models.py

import pymysql

class myModel(object):
    def __init__(self):
        self.conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def getlist(self,sql):
        self.cursor.execute(sql)
        res = self.cursor.fetchall()
        return res

[3].-app01-views.py

import json
from django.shortcuts import render,redirect,HttpResponse
import pymysql
from app01.models import myModel

def ajax_add_classes(request):
    classname = request.POST.get('classname')
    print(classname)
    if len(classname) > 0:
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('insert into classes (classname) values (%s)', (classname))
        conn.commit()
        return HttpResponse('ok')
    else:
        return HttpResponse('班级名为空')

def del_class(request):
    cid=request.GET.get('cid')
    print(cid)
    conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('delete from classes where id=%s', (cid))
    conn.commit()
    return redirect('/classes/')

def ajax_edit_class(request):
    classname = request.POST.get('classname')
    cid=request.POST.get('cid')
    print(classname)
    try:
        if len(classname) > 0:
            conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
            print(cursor)
            cursor.execute('update classes set classname=%s where id=%s', (classname,cid))
            conn.commit()
            dict={'code':10000,'msg':'添加成功'}
            return HttpResponse(json.dumps(dict))

    except Exception as e:
        dict = {'code':10001, 'msg':'添加失败'}
        return HttpResponse(json.dumps(dict))


def classes(request):
    conn=pymysql.connect(host='192.168.10.5',user='root',passwd='123456',db='day18',charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from classes',())
    res=cursor.fetchall()
    print(res)
    return render(request,'classes.html',{'class_list':res})


def students(request):
    model=myModel()
    res=model.getlist('select students.id,students.`name`,classId,classes.classname from students LEFT JOIN classes on students.classId=classes.id;')
    print(res)
    return render(request,'students.html',{'student_list':res})

[4]. -templates-students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <style>
       .shadow{
            position: absolute;
            bottom: 0;
            top: 0;
            left: 0;
            right: 0;
            background-color: black;
            opacity: 0.4;
            z-index: 9;
        }
        .addModal,.edit_Modal{
            position: absolute;
            top:25%;
            left:35%;
            background-color: white;
            width:500px;
            height:300px;
            z-index: 10;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<h2>学生列表</h2>
<table border="1px" style="color: red">
    <tr>
        <th>
学生ID</th>
        <th>
学生名称</th>
        <th>
班级名称</th>
        <th>
操作</th>
    </tr>

    {% for item in student_list  %}
        <tr>
            <td>{{ item.id}}</td>
            <td>{{ item.name}}</td>
            <td>{{ item.classname}}</td>
            <td>
                <a href="" onclick="return doConfirm()">
删除</a>
                <a class="ajax_edit_btn">ajax
更新</a>
            </td>
        </tr>
    {% endfor %}
</table>

<div class="shadow hide " id="shadow"></div>

<div class="addModal hide" id="modal">
    <form >
        <p><input type="text" name="classname" id="classname" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_add_send"><span id="hint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

<div class="edit_Modal hide" >
    <form>
        <input type="hidden" id="ajax_hide_id">
        <p><input type="text" name="classname" id="editClassName" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_edit_send"><span id="edithint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

</body>
<script>
    function doConfirm() {
        res=window.confirm('请确认是否删除')
        if (res){
            return true
       
}else {
            return false
       
}
    }

    $('#ajax_add_btn').click(function () {
        $('.shadow,.addModal').show()
    })
    $('.cancelBtn').click(function () {
        $('.shadow,.addModal,.edit_Modal').hide()
    })

    $('#ajax_add_send').click(function () {
        $.ajax({
            url:'/ajax_add_classes/',
            type:"POST",
            data:{"classname":$('#classname').val()},

            success:function (args) {
                console.log(args)
                if(args=='ok'){
                    window.location.href='/classes/'
               
}else {
                    $('#hint').text(args)
                }
            }
        })
    })

    $('.ajax_edit_btn').click(function () {
        $('.edit_Modal,.shadow').show();
        var v=$(this).parent().prevAll()
        $('#editClassName').val($(v[0]).text())
        $('#ajax_hide_id').val($(v[1]).text())
    })

    $('#ajax_edit_send').click(function () {
        var classname=$('#editClassName').val()
        var cid=$('#ajax_hide_id').val()
        console.log(classname+cid)
        $.ajax({
            url:'/ajax_edit_class/',
            type:"POST",
            data:{"classname":classname,"cid":cid},

            success:function (args) {
                console.log(args)
                res=JSON.parse(args)
                console.log(res)
                if (res['code']==10000){
                    location.reload();
                }else {
                    $('#edithint').text(res['msg'])
                }

            }
        })
    })

</script>
</html>

.代码第五层

添加学生,优化sqlGETPOST封装

[1].-myweb-urls.py

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import render
from app01 import views


urlpatterns = [
    url(r'^classes/', views.classes),
    url(r'^del_class/', views.del_class),
    url(r'^ajax_add_classes/', views.ajax_add_classes),
    url(r'^ajax_edit_class/', views.ajax_edit_class),
    url(r'^students/', views.students),
    url(r'^add_students/', views.add_students),
]

[2].-app01-models.py

import pymysql

class myModel(object):
    def __init__(self):
        self.conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def getlist(self,sql):
        self.cursor.execute(sql)
        res = self.cursor.fetchall()
        return res

    def modify(self,sql,args):
        self.cursor.execute(sql,args)
        self.conn.commit()

    def close(self):
        self.cursor.close()
        self.conn.close()

[3].-app01-views.py

import json
from django.shortcuts import render,redirect,HttpResponse
import pymysql
from app01.models import myModel

def ajax_add_classes(request):
    classname = request.POST.get('classname')
    print(classname)
    if len(classname) > 0:
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('insert into classes (classname) values (%s)', (classname))
        conn.commit()
        return HttpResponse('ok')
    else:
        return HttpResponse('班级名为空')

def del_class(request):
    cid=request.GET.get('cid')
    print(cid)
    conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('delete from classes where id=%s', (cid))
    conn.commit()
    return redirect('/classes/')

def ajax_edit_class(request):
    classname = request.POST.get('classname')
    cid=request.POST.get('cid')
    print(classname)
    try:
        if len(classname) > 0:
            conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
            print(cursor)
            cursor.execute('update classes set classname=%s where id=%s', (classname,cid))
            conn.commit()
            dict={'code':10000,'msg':'添加成功'}
            return HttpResponse(json.dumps(dict))

    except Exception as e:
        dict = {'code':10001, 'msg':'添加失败'}
        return HttpResponse(json.dumps(dict))

def classes(request):
    conn=pymysql.connect(host='192.168.10.5',user='root',passwd='123456',db='day18',charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from classes',())
    res=cursor.fetchall()
    print(res)
    return render(request,'classes.html',{'class_list':res})

model=myModel()
def students(request):

    res=model.getlist('select students.id,students.`name`,classId,classes.classname from students LEFT JOIN classes on students.classId=classes.id;')
    print(res)
    return render(request,'students.html',{'student_list':res})

def add_students(request):
    if request.method=='GET':
        res=model.getlist('select * from classes')
        print(res)
        return render(request,'add_students.html',{'class_list':res})
    else:
        student_name=request.POST.get('stuname')
        classid=request.POST.get('classid')

        print(student_name)
        print(classid)
        model.modify('insert into students (name,classId) values (%s,%s)',(student_name,classid))

        return redirect('/students/')

[4]. -templates-students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <style>
       .shadow{
            position: absolute;
            bottom: 0;
            top: 0;
            left: 0;
            right: 0;
            background-color: black;
            opacity: 0.4;
            z-index: 9;
        }
        .addModal,.edit_Modal{
            position: absolute;
            top:25%;
            left:35%;
            background-color: white;
            width:500px;
            height:300px;
            z-index: 10;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<h2>学生列表</h2>
<a href="/add_students/">添加学生</a>
<table border="1px" style="color: red">
    <tr>
        <th>学生ID</th>
        <th>学生名称</th>
        <th>班级名称</th>
        <th>操作</th>
    </tr>

    {% for item in student_list  %}
        <tr>
            <td>{{ item.id}}</td>
            <td>{{ item.name}}</td>
            <td>{{ item.classname}}</td>
            <td>
                <a href="" onclick="return doConfirm()">删除</a>
                <a class="ajax_edit_btn">ajax更新</a>
            </td>
        </tr>
    {% endfor %}
</table>

<div class="shadow hide " id="shadow"></div>

<div class="addModal hide" id="modal">
    <form >
        <p><input type="text" name="classname" id="classname" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_add_send"><span id="hint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

<div class="edit_Modal hide" >
    <form>
        <input type="hidden" id="ajax_hide_id">
        <p><input type="text" name="classname" id="editClassName" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_edit_send"><span id="edithint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

</body>
<script>
    function doConfirm() {
        res=window.confirm('请确认是否删除')
        if (res){
            return true
       
}else {
            return false
       
}
    }

    $('#ajax_add_btn').click(function () {
        $('.shadow,.addModal').show()
    })
    $('.cancelBtn').click(function () {
        $('.shadow,.addModal,.edit_Modal').hide()
    })

    $('#ajax_add_send').click(function () {
        $.ajax({
            url:'/ajax_add_classes/',
            type:"POST",
            data:{"classname":$('#classname').val()},

            success:function (args) {
                console.log(args)
                if(args=='ok'){
                    window.location.href='/classes/'
               
}else {
                    $('#hint').text(args)
                }
            }
        })
    })

    $('.ajax_edit_btn').click(function () {
        $('.edit_Modal,.shadow').show();
        var v=$(this).parent().prevAll()
        $('#editClassName').val($(v[0]).text())
        $('#ajax_hide_id').val($(v[1]).text())
    })

    $('#ajax_edit_send').click(function () {
        var classname=$('#editClassName').val()
        var cid=$('#ajax_hide_id').val()
        console.log(classname+cid)
        $.ajax({
            url:'/ajax_edit_class/',
            type:"POST",
            data:{"classname":classname,"cid":cid},

            success:function (args) {
                console.log(args)
                res=JSON.parse(args)
                console.log(res)
                if (res['code']==10000){
                    location.reload();
                }else {
                    $('#edithint').text(res['msg'])
                }

            }
        })
    })

</script>
</html>

[5]. -templates-add_students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h4>添加学生</h4>
    <form action="/add_students/" method="post">
        <input type="text" name="stuname" placeholder="请输入学生名称">
        <select name="classid" id="classid">
            {% for item in class_list%}
                <option value="{{ item.id }}">{{ item.classname }}</option>
            {% endfor %}
        </select>
        <input type="submit" value="提交">
    </form>
</body>
</html>

.代码第六层

修改学生和删除学生记录,优化sqlGETPOST封装

[1].-myweb-urls.py

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import render
from app01 import views


urlpatterns = [
    url(r'^classes/', views.classes),
    url(r'^del_class/', views.del_class),
    url(r'^ajax_add_classes/', views.ajax_add_classes),
    url(r'^ajax_edit_class/', views.ajax_edit_class),
    url(r'^students/', views.students),
    url(r'^add_students/', views.add_students),
    url(r'^edit_student/', views.edit_student),
    url(r'^del_student/', views.del_student),
]

[2].-app01-models.py

import pymysql

class myModel(object):
    def __init__(self):
        self.conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def getlist(self,sql):
        self.cursor.execute(sql)
        res = self.cursor.fetchall()
        return res

    def modify(self,sql,args):
        self.cursor.execute(sql,args)
        self.conn.commit()

    def getOne(self,sql,args):
        self.cursor.execute(sql,args)
        res=self.cursor.fetchone()
        return res

    def delOne(self,sql,args):
        self.cursor.execute(sql,args)
        self.conn.commit()

    def close(self):
        self.cursor.close()
        self.conn.close()

[3].-app01-views.py

import json
from django.shortcuts import render,redirect,HttpResponse
import pymysql
from app01.models import myModel

def ajax_add_classes(request):
    classname = request.POST.get('classname')
    print(classname)
    if len(classname) > 0:
        conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute('insert into classes (classname) values (%s)', (classname))
        conn.commit()
        return HttpResponse('ok')
    else:
        return HttpResponse('班级名为空')

def del_class(request):
    cid=request.GET.get('cid')
    print(cid)
    conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('delete from classes where id=%s', (cid))
    conn.commit()
    return redirect('/classes/')

def ajax_edit_class(request):
    classname = request.POST.get('classname')
    cid=request.POST.get('cid')
    print(classname)
    try:
        if len(classname) > 0:
            conn = pymysql.connect(host='192.168.10.5', user='root', passwd='123456', db='day18', charset='utf8')
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
            print(cursor)
            cursor.execute('update classes set classname=%s where id=%s', (classname,cid))
            conn.commit()
            dict={'code':10000,'msg':'添加成功'}
            return HttpResponse(json.dumps(dict))

    except Exception as e:
        dict = {'code':10001, 'msg':'添加失败'}
        return HttpResponse(json.dumps(dict))

def classes(request):
    conn=pymysql.connect(host='192.168.10.5',user='root',passwd='123456',db='day18',charset='utf8')
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from classes',())
    res=cursor.fetchall()
    print(res)
    return render(request,'classes.html',{'class_list':res})


def students(request):
    model = myModel()
    res=model.getlist('select students.id,students.`name`,classId,classes.classname from students LEFT JOIN classes on students.classId=classes.id;')
    print(res)
    return render(request,'students.html',{'student_list':res})

def add_students(request):
    model = myModel()
    if request.method=='GET':
        res=model.getlist('select * from classes')
        print(res)
        return render(request,'add_students.html',{'class_list':res})
    else:
        student_name=request.POST.get('stuname')
        classid=request.POST.get('classid')

        print(student_name)
        print(classid)
        model.modify('insert into students (name,classId) values (%s,%s)',(student_name,classid))

        return redirect('/students/')

def edit_student(request):
    model = myModel()
    if request.method=='GET':
        sid=request.GET.get('sid')
        stuInfo=model.getOne('select * from students where id =%s',(sid))
        res=model.getlist('select * from classes')
        print(stuInfo)
        return render(request,'edit_student.html',{'stuInfo':stuInfo,'class_list':res})
    else:
        sid=request.POST.get('sid')
        stuname=request.POST.get('stuname')
        classid=request.POST.get('classid')
        model.modify('update students set name=%s,classId=%s  where id=%s',(stuname,classid,sid))
        model.close()
        return redirect('/students/')

def del_student(request):
    model = myModel()
    sid=request.GET.get('sid')
    model.delOne('delete from students where id=%s', (sid))
    return redirect('/students/')

[4]. -templates-students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <style>
       .shadow{
            position: absolute;
            bottom: 0;
            top: 0;
            left: 0;
            right: 0;
            background-color: black;
            opacity: 0.4;
            z-index: 9;
        }
        .addModal,.edit_Modal{
            position: absolute;
            top:25%;
            left:35%;
            background-color: white;
            width:500px;
            height:300px;
            z-index: 10;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
<h2>学生列表</h2>
<a href="/add_students/">添加学生</a>
<table border="1px" style="color: red">
    <tr>
        <th>学生ID</th>
        <th>学生名称</th>
        <th>班级名称</th>
        <th>操作</th>
    </tr>

    {% for item in student_list  %}
        <tr>
            <td>{{ item.id}}</td>
            <td>{{ item.name}}</td>
            <td>{{ item.classname}}</td>
            <td>
                <a href="/del_student/?sid={{ item.id }}" onclick="return doConfirm()">删除</a>
                <a href="/edit_student/?sid={{ item.id }}">
更新</a>
            </td>
        </tr>
    {% endfor %}
</table>

<div class="shadow hide " id="shadow"></div>

<div class="addModal hide" id="modal">
    <form >
        <p><input type="text" name="classname" id="classname" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_add_send"><span id="hint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

<div class="edit_Modal hide" >
    <form>
        <input type="hidden" id="ajax_hide_id">
        <p><input type="text" name="classname" id="editClassName" placeholder="请输入班级"></p>
        <p><input type="button" value="提交" id="ajax_edit_send"><span id="edithint" style="color: red"></span>
            <input type="button" value="取消" class="cancelBtn"> </p>
    </form>
</div>

</body>
<script>
    function doConfirm() {
        res=window.confirm('请确认是否删除')
        if (res){
            return true
       
}else {
            return false
       
}
    }

    $('#ajax_add_btn').click(function () {
        $('.shadow,.addModal').show()
    })
    $('.cancelBtn').click(function () {
        $('.shadow,.addModal,.edit_Modal').hide()
    })

    $('#ajax_add_send').click(function () {
        $.ajax({
            url:'/ajax_add_classes/',
            type:"POST",
            data:{"classname":$('#classname').val()},

            success:function (args) {
                console.log(args)
                if(args=='ok'){
                    window.location.href='/classes/'
               
}else {
                    $('#hint').text(args)
                }
            }
        })
    })

    $('.ajax_edit_btn').click(function () {
        $('.edit_Modal,.shadow').show();
        var v=$(this).parent().prevAll()
        $('#editClassName').val($(v[0]).text())
        $('#ajax_hide_id').val($(v[1]).text())
    })

    $('#ajax_edit_send').click(function () {
        var classname=$('#editClassName').val()
        var cid=$('#ajax_hide_id').val()
        console.log(classname+cid)
        $.ajax({
            url:'/ajax_edit_class/',
            type:"POST",
            data:{"classname":classname,"cid":cid},

            success:function (args) {
                console.log(args)
                res=JSON.parse(args)
                console.log(res)
                if (res['code']==10000){
                    location.reload();
                }else {
                    $('#edithint').text(res['msg'])
                }

            }
        })
    })

</script>
</html>

[5]. -templates-edit_student.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h4>更新班级</h4>
    <form action="/edit_student/" method="post">
        <input type="hidden" name="sid" value="{{ stuInfo.id }}">
        <input type="text" name="stuname" value="{{ stuInfo.name }}">
        <select name="classid" id="classid">
            {% for item in class_list%}
                {% if item.id == stuInfo.classId  %}
                    <option value="{{ item.id }}" selected>{{ item.classname }}</option>
                {% else %}
                    <option value="{{ item.id }}">{{ item.classname }}</option>
                {% endif %}
            {% endfor %}
        </select>
        <input type="submit" value="提交">
    </form>
</body>
</html>

[1].-myweb-urls.py

[2].-app01-models.py

[3].-app01-views.py

[4]. -templates-students.html

[5]. -templates-add_students.html

返回顶部