记录一下Django+知晓云写的教师信息Demo

  • 要求
    功能描述
    1、删除某个教师
    2、返回某个学院某个职称的所有教师,学院评价
    (不管任何职称,若该职称下的老师数量大于5,评价为“A”;数量为3~5,评价为“B”;小于3,评价为“C”)
    数据库表的字段
    字段名(可自定义) 备注
    id 主键
    name 教师姓名
    college 学院
    title 职称(讲师、副教授、教授等)
    访问接口(Controller层设置)
    1、删除某个教师
    接口名称:deleteTeacher
    输入:教师姓名
    返回:删除的教师信息(姓名、学院、职称)
    2、返回某个学院某个职称的所有老师,学院评价
    接口名称:getSomeTeacher
    输入:学院、职称
    返回:学院评价,老师列表
    浏览器端发起请求的例子
    1、删除某个教师
    http://localhost:8080/demo/ deleteTeacher?name=张三
    2、返回某个学院某个职称的所有老师,学院评价
    http://localhost:8080/demo/ getSomeTeacher?college=计算机学院& title=讲师

  • 页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>教师管理系统</title>
</head>
<body>
<form action="/deleteTeacher" method="get" id="delete">
    <h3>删除的教师姓名是:</h3>
    <input type="text" name="name">
    <input type="submit" value="提交">
</form>
<hr />

<form action="/getSomeTeacher" method="get" id="get">
    <h3>学院评价查询:</h3>
    <label>学院名称</label>
    <input type="text" name="college">
    <label>职称</label>
    <input type="text" name="title">
    <input type="submit" value="提交">
</form>
<div>
    <h4>学校评价:{{ evaluation }}</h4>
    <p>{{ data|safe }}</p>
    <tbody>
        <table width="400">
            {% for row in content %}
            <tr>
                <td>姓名:{{ row.name }}</td>
                <td>学校:{{ row.college }}</td>
                <td>职称:{{ row.title }}</td>
            </tr>
            {% endfor %}
        </table>
    </tbody>
</div>
</body>
</html>
  • urls
from django.conf.urls import url
from . import view,testdb

urlpatterns = [
    url(r'^demo$', view.oper),
    url(r'^deleteTeacher$', testdb.deleteTeacher),
    url(r'^getSomeTeacher$', testdb.getSomeTeacher),
]

  • models.py (没用Django的模型,为了在app里面实现模块化,这里是连接知晓云数据库)
import requests
import json

class Connect():
    code_config = {
        'url': 'https://cloud.minapp.com/api/oauth2/hydrogen/openapi/authorize/',
        'headers': {'Content-Type': 'application/json'}
    }
    code_data = {
        'client_id': '*********************',
        'client_secret': '***********************'
    }
    token_config = {
        'url': 'https://cloud.minapp.com/api/oauth2/access_token/',
        'headers': {'Content-Type': 'application/json'}    
    }
    token_data = {
        'client_id': '***********************',
        'client_secret': '***************************',
        'grant_type': 'authorization_code',
        'code': None
    }
    table_id = '******'

    code_response = requests.post(url=code_config['url'], 
            data=json.dumps(code_data), 
            headers=code_config['headers'])
    token_data['code'] = code_response.json().get('code')
    token_response = requests.post(url=token_config['url'], 
            data=json.dumps(token_data), 
            headers=token_config['headers'])
    token = token_response.json().get('access_token')
  • 函数接口
from TestModel.models import Connect
import json
import requests
import urllib
from urllib.parse import urlencode
from django.http import HttpResponse
from django.shortcuts import render

def get_id(record_name): 
    base_api = r'https://cloud.minapp.com/oserve/v1/table/%s/record/' % Connect.table_id
    headers = {
        'Authorization': 'Bearer %s' % Connect.token,
    }
    where_ = {
            'name': {'$eq': record_name},
        }
    query_ = urllib.parse.urlencode({
            'where': json.dumps(where_),
            'order_by': '-created_at',
            'limit': 1,
            'offset': 0,
        })
    api = '?'.join((base_api, query_))

    resp_ = requests.get(api, headers=headers)
    resp_object = json.loads(resp_.content)
    objects = resp_object["objects"][0]
    global _college, _name, _title
    _college = objects['college']
    _name = objects['name']
    _title = objects['title']
    return objects['id']

def deleteTeacher(request):
    record_name  =  request.GET['name']  
    try:
        record_id = get_id(record_name)
        base_api = 'https://cloud.minapp.com/oserve/v1/table/{0}/record/{1}/'.format(Connect.table_id, record_id)
        headers = {
            'Authorization': 'Bearer %s' % token,
            'Content-Type': 'application/json',
            'charset' : 'utf-8'
        }
    except  IndexError:
        back = '查无此人!'
        return HttpResponse(back)
    else:
        response = requests.delete(url=base_api, headers=headers)
        back = '删除成功!<br> 姓名:{0}<br> 学校:{1}<br> 职称:{2}'.format(_name, _college, _title)
        return HttpResponse(back)

def getSomeTeacher(request):
    record_college = request.GET['college']
    record_title = request.GET['title']
    base_api = r'https://cloud.minapp.com/oserve/v1/table/%s/record/' % Connect.table_id
    headers = {
        'Authorization': 'Bearer %s' % Connect.token,
    }
    where_ = {
            'college': {'$eq': record_college},
            'title': {'$eq': record_title},
        }
    query_ = urllib.parse.urlencode({
            'where': json.dumps(where_),
            'order_by': '-created_at',
            'offset': 0,
        })
    api = '?'.join((base_api, query_))
    resp_ = requests.get(api, headers=headers)
    
    content = json.loads(resp_.content)
    num = len(content['objects'])
    if(num>5):
        evaluation = 'A'
    elif(num>3):
        evaluation = 'B'
    else:
        evaluation = 'C'
    context = {'content': content['objects'], 'evaluation': evaluation}
    return render(request,'operation.html', context)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值