-
要求
功能描述
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)