错误:

{"errcode":40033,"errmsg":"invalid charset. please check your request, if include \\uxxxx will create fail!"}

由于dumps将dict转换成str时中文会被转换成unicode格式

所以在使用dumps转换时使用

ensure_ascii=False禁止中文转换

 

菜单参数:

menu={
 "button": [
 {
 "type": "click",
 "name": "随机电影",
 "key": "电影+随机"
 },
 {
 "type": "click",
 "name": "作者",
 "key": "作者"
 },
 {
 "name": "MarkSS",
 "sub_button": [
 {
 "type": "click",
 "name": "邀请码",
 "key": "邀请码"
 },
 {
 "type": "click",
 "name": "签到",
 "key": "签到"
 },
 {
 "type": "click",
 "name": "私有节点",
 "key": "私有节点"
 },
 {
 "type": "click",
 "name": "科学上网",
 "key": "科学上网"
 },
 ]
 }]
}

接口测试:
def createTable(request):
    param = Params.menu
    data = dumps(param, ensure_ascii=False) #dumps是将dict转化成str格式,loads是将str转化成dict格式
    data=bytes(data,'utf8')
    #params = urllib.parse.urlencode(param).encode('utf-8')
    url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='+AccessToken
    create_url = urllib.request.Request(url)
    msg = urllib.request.urlopen(create_url, data)
    return HttpResponse(msg)