Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自MySQL和基于HTML的webclient的Django Rest的Localhost未按预期工作_Javascript_Html_Django_Django Rest Framework - Fatal编程技术网

Javascript 来自MySQL和基于HTML的webclient的Django Rest的Localhost未按预期工作

Javascript 来自MySQL和基于HTML的webclient的Django Rest的Localhost未按预期工作,javascript,html,django,django-rest-framework,Javascript,Html,Django,Django Rest Framework,我有我的小项目,我正在工作的问题,并希望得到一些帮助来你 首先,我会问一个简单的问题,这可能是我的问题的根源——但如果不是,我会从REST设置和webclient端提供我的代码。所以这是一个很长的帖子 我可以从本地机器使用我的网络客户端,本地主机127.0.0.1:8000正在运行,一切正常。Webclient是从my schoolspublic\u html系统的浏览器运行的。这是如何设置的,我不是100%确定,但基本上我们可以设置网页使用文件夹从学校系统运行,并从网络访问网页。我从脚本运行i

我有我的小项目,我正在工作的问题,并希望得到一些帮助来你

首先,我会问一个简单的问题,这可能是我的问题的根源——但如果不是,我会从REST设置和webclient端提供我的代码。所以这是一个很长的帖子

我可以从本地机器使用我的网络客户端,本地主机127.0.0.1:8000正在运行,一切正常。Webclient是从my schoolspublic\u html系统的浏览器运行的。这是如何设置的,我不是100%确定,但基本上我们可以设置
网页
使用文件夹从学校系统运行,并从网络访问网页。我从脚本运行index.html和类似
JS、制表扩展、Jquery、Ajax
,或者本地安装并包含在
标记中

我可以使用设置好的
GET/PUT/DELETE
etc命令,这样当我通过
webclient
在本地机器上工作时,一切都可以正常工作

问题是:

当localhost 127.0.0.1:8000在
localmachine
上运行时,我是否应该能够从非本地计算机连接其余部分,而
webclient
是从哪里托管的

到目前为止,我还没有成功地做到这一点,我想知道我的假设是否是错误的,我应该能够做到

当我使用非本地机器时,GET请求不会得到任何答案,也不会显示在运行127.0.0.1:8000的
CMD
上。本地机器即使我将其设置为失败(用于测试),也会收到回复。但非本地机器似乎什么也得不到

如果我的假设是正确的,那么问题是否会再次出现在CORS上

有什么建议吗

Django settings.py

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'secretkey'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ["*"]
ACCESS_CONTROL_ALLOW_ORIGIN = ['http://www.cc.puv.fi']
ACCESS_CONTROL_ALLOW_HEADER = ['X-Requested-With', 'Content-Type', 'Origin', 'Cache-Control', 'Pragme', 'Authorization', 'Accept', 'Accept_Encoding']
ACCESSS_CONTROL_ALLOW_METHODS = ['PUT', 'POST', 'GET', 'OPTIONS', 'DELETE']


# Application definition

INSTALLED_APPS = [
    'corsheaders',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes', 
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'lab',
]


MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True
#CORS_ALLOW_CREDENTIALS = True

#CORS_ORIGIN_WHITELIST = (
#  'http://www.cc.puv.fi',
 # 'http://127.0.0.1:8000',
#)

ROOT_URLCONF = 'lab.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'lab.wsgi.application'

# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'ursername',
'PASSWORD': 'password',
'HOST': 'host',
'PORT': 'port',
}
}

# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'

STATICFILES_DIRS = [
 os.path.join(BASE_DIR, "static"),
 'D:\VAMK\lab\static', # HUOMAA D levy!!
]

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
    'rest_framework.renderers.JSONRenderer',
    'rest_framework.renderers.BrowsableAPIRenderer',
    'rest_framework_xml.renderers.XMLRenderer',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ],
}
使用REST的页面之一:

    <!DOCTYPE html>
<html>
<head>
<!-- BASE SETTINGS -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='https://fonts.googleapis.com/css?family=Aldrich' rel='stylesheet'>
<link href="styles/style.css" rel="stylesheet">

<title> Vamk Database </title>
<!-- BASE SETTINGS -->  

<!-- SCRIPT FOR AXIOS -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>   
<script
    src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous">
</script>
<!-- SCRIPT FOR AXIOS -->

<!-- SCRIPT FOR JQUERY UI -->
<script
    src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
    integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
    crossorigin="anonymous">
</script>
<!-- SCRIPT FOR  -->


<!-- SCRIPT FOR TABULATOR  -->
 <link rel="stylesheet" href="dist/css/tabulator.css"> 
<script type="text/javascript" src="dist/js/tabulator.js"></script>
<!-- SCRIPT FOR -->

<!-- SCRIPT FOR -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script>
<!-- SCRIPT FOR --> 

<!-- DOWNLOAD LIBS -->
<script type="text/javascript" src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/2.3.2/jspdf.plugin.autotable.js"></script>

<script type="text/javascript">

//STORED PASSWORD AND USERNAME
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "extra.txt", false);
xhttp.send();

var x = xhttp.responseText;

var auther = x;
var validation = "";

// CHECKS IF THERE IS AUTH TOKEN IN DB
function getAuth(){
    var request = new XMLHttpRequest();
    request.open("GET", "http://127.0.0.1:8000/Valids/", false);
    request.setRequestHeader("Authorization", "Basic " + btoa(auther));
    request.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
    request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    request.send();
        array = JSON.parse(request.responseText);   
        if (array == "") {
            validation = false;
        }
        else {
            validation = true;
        }
    return validation;
}

//COOKIE CHECK
function readCookie(name) {
 var nameEQ = encodeURIComponent(name) + "=";
 var ca = document.cookie.split(';');
 for (var i = 0; i < ca.length; i++) {
 var c = ca[i];
 while (c.charAt(0) === ' ') c = c.substring(1, c.length);
 if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));
 }
 return null;
}
</script>

</head>

<body>

<script type="text/javascript">
    getAuth();
</script>

    <div id="root">  

<div id="header" class="test">
        <h1> VAMK Laboratory Database </h1>
</div>

<div id="options">  

    <button id="show-ops" type="button" value="Show options" onclick=""> Toggle Options </button>
    <button onclick="window.location.href='authindex.html'" id="return">Return</button> 
    <button onclick="logout()" id="login">Logout</button>

    <div id="ops" style="display:none">
    <button id="download-pdf" class="downloads"> Download PDF </button>
    <button id="download-csv" class="downloads"> Download CSV </button>
    <button id="download-json" class="downloads"> Download JSON </button>
    <button id="download-xlsx" class="downloads"> Download XLSX</button>

    <button id="add-row" class="rows"> Add Row </button>
    <button id="del-row" class="rows"> Delete Rows </button>

    </div>

</div>

<div id="noacc" style="display=none">

<h1> No Access </h1>

</div>

<div id="example-table"></div>  

<script>

if ( validation != true) {
    console.log(validation);
    document.getElementById("noacc").style.display='block';
    document.getElementById("options").style.display='none';
    document.getElementById("example-table").style.display='none';      
}

else {  

    document.getElementById("noacc").style.display='none';

// DIV HIDING SCRIPT
$("#show-ops").click(function(){
        if (document.getElementById("ops").style.display == 'none') 
        document.getElementById("ops").style.display='block';
        else
        document.getElementById("ops").style.display='none';
});


/*
// Performing a GET request ! 
    axios({
    method: 'GET',
    url: 'http://127.0.0.1:8000/Vamk_Rs/',
    responseType: 'json'
}) 


  .then(function(response){  
  */

    var response = new XMLHttpRequest();
    response.open("GET", "http://127.0.0.1:8000/Vamk_Rs/", false);
    response.setRequestHeader("Authorization", "Basic " + btoa(auther));
    response.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
    response.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    response.send();

var array = JSON.parse(response.responseText);

console.log(array);

    if (response.status ==  200) {

// POSTING UPDATED CELL TO REST

$("#example-table").tabulator({
    cellEdited:function(cell){
            var data = cell.getData();
            var url = data.url;
            var posting = JSON.stringify(data);
            var update = new XMLHttpRequest();
                update.open("PUT", url, true);
                update.setRequestHeader("Authorization", "Basic " + btoa(auther));
                update.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
                update.setRequestHeader("Content-Type", 'application/json');
                    update.send(posting); 
},

// TABLE LAYOUT 
    layoutColumnsOnNewData:true,
    layout:"fitColumns",
    responsiveLayout:"hide",
    placeholder:"No Data Set",
    pagination:"local",
    paginationSize:50,
    addRowPos:"top",
    selectable: true,
    align: 'center',
    columns:[
        {title:"Select Row", field:"", width:'100'},
        {title:"Category", field:"category", headerFilter:"input", align:"center", editor: "input"},
        {title:"Value", field:"strenght", headerFilter:"input", editor:"input", width: '80'},
        {title:"Unit", field:"unit", headerFilter:"input", editor:"input", width: '80'},
        {title:"Part Number", field:"manufacturer_part_number", headerFilter:"input", editor:"input", width: '160'},
        {title:"Location", field:"storing_location", headerFilter:"input", editor:"input"},
        {title:"EC19 Location", field:"storing_location_ec19", headerFilter:"input", editor:"input"},
        {title:"Type", field:"ptypename", headerFilter:"input", editor:"input"},
        {title:"Description", field:"description", headerFilter:"input", editor:"input", width: '180'}, 
        {title:"Order Number Elfa", field:"order_number_elfa", headerFilter:"input", editor:"input", width: '150'},
        {title:"Order Number Farnell", field:"order_number_farnell", headerFilter:"input", editor:"input", width: '160'},
        {title:"Amount", field:"a", editor:"input", width: '80', headerFilter:"input"},
        {title:"Tilattu", field:"tilattu", editor:"input", width: '80', headerFilter:"input"},
        {title:"Kuittaus", field:"kuittaus", editor:"input", width: '80', headerFilter:"input"}, 
    ],

});

// DOWNLOAD OPTIONS!!!

//trigger download of data.csv file
$("#download-csv").click(function(){
    $("#example-table").tabulator("download", "csv", "data.csv");
});

//trigger download of data.json file
$("#download-json").click(function(){
    $("#example-table").tabulator("download", "json", "data.json");
});

//trigger download of data.xlsx file
$("#download-xlsx").click(function(){
    $("#example-table").tabulator("download", "xlsx", "data.xlsx", {sheetName:"My Data"});
});

//trigger download of data.pdf file
$("#download-pdf").click(function(){
    $("#example-table").tabulator("download", "pdf", "data.pdf", {
        orientation:"portrait", //set page orientation to portrait
        title:"Example Report", //add title to report
    });
});

// ADD AND DELETE ROWS

//Add row on "Add Row" button click
$("#add-row").click(function(){
    $("#example-table").tabulator("addRow", {});
    var data = {
    "category": "",
    "strenght": "",
    "manufacturer_part_number": "",
    "storing_location": "",
    "storing_location_ec19": "",
    "ptypename": "",
    "tolerance": "",
    "description": "",
    "order_number_elfa": "",
    "order_number_farnell": null,
    "a": "",
    "tilattu": "",
    "kuittaus": ""
}
    posting = JSON.stringify(data);

    var request = new XMLHttpRequest();
            var url = "http://127.0.0.1:8000/Vamk_Rs/";
                request.open("POST", url, true);    
                request.setRequestHeader("Authorization", "Basic " + btoa(auther));
                request.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
                request.setRequestHeader("Content-Type", 'application/json');
                    request.send(posting); 
});


//Delete row on "Delete Row" button click
$("#del-row").click(function(){
  var rows = $('#example-table').tabulator("getSelectedRows");
    console.log(rows);
  $.each(rows, function(index, row) {
    console.log(rows);
    row.delete();
//SENDING INFO OF DELETED ROWS TO REST  
    var data = row.getData();
    console.log(data);
    posting = JSON.stringify(data);

    var request = new XMLHttpRequest();
            var url = data.url;
                request.open("DELETE", url, true);  
                request.setRequestHeader("Authorization", "Basic " + btoa(auther));
                request.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
                request.setRequestHeader("Content-Type", 'application/json');
                    request.send(posting);  
  });
});

// INIATE THE TABLE
 $("#example-table").tabulator("setData", array); 
}
}

function logout(){
    var req = new XMLHttpRequest();
            req.open("GET", "http://127.0.0.1:8000/Valids/", false);
            req.setRequestHeader("Authorization", "Basic " + btoa(auther));
            req.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
            req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
            req.send();

            var tmpStr = req.responseText;
            var newStr = tmpStr.substring(1, tmpStr .length-1);
            console.log("newStr= " + newStr);
            var obj = JSON.parse(newStr);
            console.log("OBJ = " + obj);
            var url = obj.url;

            var del = new XMLHttpRequest();
            del.open("DELETE", url, false);
            del.setRequestHeader("Authorization", "Basic " + btoa(auther));
            del.setRequestHeader("X-CSRFToken", readCookie("csrftoken"));
            del.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
            del.send();         
            window.location.href='index.html';
} 


</script> 



</div>

</body>

</html>

Vamk数据库
//存储的密码和用户名
var xhttp=newXMLHttpRequest();
xhttp.open(“GET”,“extra.txt”,false);
xhttp.send();
var x=xhttp.responseText;
var-auther=x;
var验证=”;
//检查数据库中是否有身份验证令牌
函数getAuth(){
var request=new XMLHttpRequest();
请求。打开(“获取”http://127.0.0.1:8000/Valids/“,假);
setRequestHeader(“授权”、“基本”+btoa(auther));
setRequestHeader(“X-CSRFToken”,readCookie(“CSRFToken”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=UTF-8”);
request.send();
array=JSON.parse(request.responseText);
如果(数组==“”){
验证=假;
}
否则{
验证=真;
}
退货确认;
}
//饼干支票
函数readCookie(名称){
var nameEQ=encodeURIComponent(name)+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i